TCP/IP 教程学习笔记

1. 网络基础知识

1.1 OSI七层模型

OSI是开放式系统互联通信参考模型,它将计算机网络体系结构分为七层。每一层都有自己独特的功能和协议。

  • 应用层(application layer):该层处理应用程序和用户之间的交互操作。
  • 表示层(presentation layer):该层负责数据格式的转换与表示。
  • 会话层(session layer):该层负责建立、管理和终止会话连接。
  • 传输层(transport layer):该层提供端到端的可靠传输服务,以及定义了TCP和UDP协议。
  • 网络层(network layer):该层负责数据在网络中的传输和路由选择,包括IP协议。
  • 数据链路层(data link layer):该层将数据转换为帧(Frame)并传输到下一层,包括MAC地址。
  • 物理层(physical layer):该层定义物理设备的接口、电气标准和传输介质,如网线、光纤等。

1.2 TCP/IP四层模型

TCP/IP是实际网络中最常用的网络协议栈。它将网络分成四个层次,分别是:

  • 应用层(application layer):该层处理应用程序和用户之间的交互操作。
  • 传输层(transport layer):该层提供端到端的可靠传输服务,以及定义了TCP和UDP协议。
  • 网际层(internet layer):该层负责数据在网络中的传输和路由选择,包括IP协议。
  • 网络接口层(network interface layer):该层定义物理设备的接口、电气标准和传输介质,如网线、光纤等。

2. TCP/IP协议

2.1 IP协议

IP协议是TCP/IP协议族的网络层协议之一,它是一种无连接的、不可靠的协议。它主要有以下作用:

  • 定义数据包的格式和传输方式。
  • 为每个数据包分配一个地址(IP地址)。
  • 进行路由选择和寻址转发。

下面是一个IP数据包的格式例子:

Copy Code
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |Version| IHL |Type of Service| Total Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Identification |Flags| Fragment Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Time to Live | Protocol | Header Checksum | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Destination Address | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

2.2 TCP协议

TCP是一种基于连接、可靠交付、面向字节流的传输层协议。它能够在数据传输中提供许多功能,如错误检查、流量控制、拥塞控制等。

下面是一个TCP数据包的格式例子:

Copy Code
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Source Port | Destination Port | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Sequence Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Acknowledgment Number | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Data | |U|A|P|R|S|F| | | Offset| Reserved |R|C|S|S|Y|I| Window | | | |G|K|H|T|N|N| | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Checksum | Urgent Pointer | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Options | Padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | data | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

3. 实例

以HTTP协议为例,HTTP是一种应用层协议,基于TCP协议实现。HTTP协议通常使用80端口进行传输,它的请求和响应数据格式如下:

3.1 请求数据格式

Copy Code
METHOD /path/to/resource HTTP/1.1 Header1: value1 Header2: value2 ... HeaderN: valueN Body

3.2 响应数据格式

Copy Code
HTTP/1.1 statusCode statusMessage Header1: value1 Header2: value2 ... HeaderN: valueN Body

通过这个例子可以看出,在实际的网络通信中,不同层次的协议会相互配合完成任务,例如HTTP协议依赖于TCP协议的可靠传输,而TCP协议则又依赖于IP协议的路由选择和寻址转发。