(参考文献)TCP/IP详解,卷1:协议
Tcp/ip协议的四个层次:
在以上的图中,FTP属于应用层的协议,TCP、UDP属于运输层的协议。
在TCP/IP协议族中,网络层IP提供的是一种不可靠的服务,,它尽可能的把分组从源节点送到目的节点,但是并不提供任何可靠保证。而TCP在不可靠的IP层上提供了一个可靠的运输层(参见TCP三次握手),为了提供这种可靠的服务,TCP采用了超时重传,发送和接收的端到端的确认分组等机制。
TCP、IP协议的分层结构图:
在以上图中,ICMP(控制报文协议)是IP协议的附属协议,IP层用它来与其他主机或路由器交换错误报文和其他重要信息。
ICMP是Internet组管理协议,它用来把一个UDP数据多播到多个主机上。
互联网地址分类:
数据包的封装:
当应用程序用TCP传数据时,数据被送入协议栈中,由上到下对每一层的数据进行加工(主要是增加一些首部信息和尾部信息);TCP串给IP的数据单元被称为TCP报文段;IP传为网络接口层的数据单元被称为IP数据报;通过以太网传输的比特流称作帧。
封装流程图图下图:
UDP数据与TCP数据基本一致,唯一不同的是,UDP传给IP的信息单元称为UDP数据包,并且UDP的首部长为8字节。
在上面的TCP、IP的分层结构图中我们可以看见,用户程序、TCP、UDP、ICMP等都会向IP传送数据,因此在IP的首部加入了长度为8bit的标识;1表示ICMP协议,2表示IGMP协议,6表示TCP,17表示UDP协议。
TCP、和UDP在传送数据的过程中都会用到一个16bit的端口号来表示不同的应用程序TCP和UDP把源端口号和目的端口号分别存入报文首部中。(216= 65536)
网络接口通常要发送和接收IP、ARP、RARP数据,因此在以太网的首部(及帧的首部)也有一个16bit的标识。
数据帧的解析过程:
端口号的分配(216 = 65536):
在上面说了TCP和UDP采用了16bit的端口号来识别应用程序。
知名端口号一般位于:1 --- 255 之间
256 --- 1023的端口号,通常是由Unix系统占用(系统占用)
1024 ---5000 是大多数TCP、IP实现的临时分配
大于5000的一般是给其他服务预留的(Internet上并不常用的服务)