赞
踩
TCP与UDP都是TCP/IP中的传输层协议,首先我们要先对传输层做一下了解:传输层负责在两个应用程序之间建立临时通讯会话以及在它们之间传递数据
传输层有如下职责:
另外,传输层通过会话的多路复用来更好地进行错误恢复和重新传输工作。
多路复用将数据分割成更小的块(分段),在同一网络上交替实现不同用户的不同通讯。由于这一特性,应用程序可以同时使用网络,传输层利用向几个字段添加包含二进制数据报头的方式识别每个分段数据。
套接字由IP地址和端口号组成,其表示方法为 socket=(IP:PORT)。一个应用程序拥有一个或多个套接字,它相当于从网络向进程传递数据和从进程向网络传递数据的门户。运行于服务端的套接字被称为Server Socket,运行于客户端的套接字被称为Client Socket。
套接字主要有以下三种类型:
套接字工作流程如下:
在接收主机的运输层实际上并没有将数据直接交给进程,而是将数据交给了一个中间套接字。
运输层检查运输层报文字段,标识出接收套接字,进而将报文段定向到该套接字。
将报文段包含的数据交付给套接字的工作称为多路分解。
在源主机从不同套接字中收集数据块,并为每个数据块封装上首部信息从而生成报文段,然后将报文段传输到网络层,这一过程被称为多路复用。
多路复用有如下要求:
端口号,一般称为端口,是一个16位的数,其大小在0到65535之间。
端口号大体上可以分为如下三类:
下面我们给出几个经常用到的熟知端口号(并不代表全部)
FTP(21)、SSH(22)、HTTP(80)、HTTPS(443)、POP3(110)、SMTP(25)
UDP协议,即用户数据报协议。它是一个无状态协议,这意味这客户端和服务器都不会跟踪会话状态,不会建立连接。
因此,UDP有如下特点:
值得注意的是,UDP虽无连接建立和无连接状态,但这并不意味着使用UDP的程序不可靠。如果传输时要求可靠性,则必须由应用程序来处理,这正对应上述第一点。
下面,我们对UDP报文结构以及报头的每个字段进行分析。
UDP报文结构如下:
下面对报头字段进行分析:
正如上述,UDP协议本身并不对差错进行恢复,但它利用检验和来指示差错是否发生。
校验和算法如下:
TCP协议,即传输控制协议。它是面向连接的。在一个应用程序向另一个应用程序通过TCP协议传输数据时,它们会先发送某些预备报文段确定传输的参数,这一过程被称为握手。
TCP提供的时全双工服务,其连接也是点对点的。
TCP是一个可靠的传输协议,它的可靠性如下:
TCP把数据看作一个无结构的、有序的字节流,它隐式地对每个字节进行编号,这将在下文进行说明。
TCP报文结构如下(图片源自网络):
下面对TCP报头字段分析:
下面对标志字段各部分(每部分长1位)进行说明:
对于建立TCP连接:
对于结束连接:
此外,需要注意的是,第二步所描述的报文段与第三步的可为统一报文段,这种情况满足的条件是数据恰好均已发送完毕。如果数据没有发送完,在第二步之后还会等待数据发送完毕,服务端才会进入第三步返回FIN报文段。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。