传输层协议--TCP与UDP

绪论:传输层定义了主机应用程序之间端到端的连通信。传输层中最为常见的两个协议分别是传输控制协议(TCP:Transmission Controller Protocol)和用户数据包协议(UDP:User Datagram Protocol)。

传输层是基于端口的协议。因为PC是多进程的,IP在互联网上标识了主机,端口则标识了主机进程。

一般情况下,源端口是随机产生的,知名目标端口是固定的(0-1023),动态端口范围1024-65535

FTP:文件传输协议  基于TCP协议    20端口用于数据传输   21端口用于控制信令传输

TFTP(Trivial File Transfer Protocol)简单文件传输协议 基于UDP协议  默认端口69

HTTP:超文本传输协议   TCP协议80端口

Telnet:远程终端协议   基于TCP协议   默认端口23

SNMP:标准的SNMP协议采用的默认端口是161 162

SSH:安全外壳协议   华为称作(stelnet)  默认端口为22

SMTP:TCP端口25

POP3:邮局协议   C/S架构  基于TCP协议 110端口

IMAP4:互联网消息存取协议  默认端口143

DHCP:动态主机配置协议  服务器67  客户端68

DNS:域名系统   默认端口53

Windows默认远程接口:3389

1、UDP

UDP是一种面向无连接的传输层协议,传输可靠性无法保证。是基于数据报的协议(发多少传多少)。

当应用程序对传输的可靠性要求不高(对丢包不敏感)、但是对传输速率和延迟要求较高时采用UDP。

可以支持多播可广播

UDP报头:

传输层协议--TCP与UDP

S.port:16位,源主机应用程序端口号

D.port:16位,目的主机应用程序端口号

Length:UDP头部和数据的字节长度。因为UDP头部是8字节,所以该字段最小值为8位

Checksum:字段可选,校验整个数据报(头部+数据)

利用UDP传输数据:

当A、B双方用UDP协议传输数据包时,这些数据包是以有序的方式传输到网络中的,每个数据包独立地在网络中被发送,所以不同的数据包可能会通过不同的网络路径到达主机B。这样的情况下,先发送的数据包不一定先到达主机B。因为UDP数据包没有序号,主机B将无法通过UDP协议将数据包按照原来的顺序重新组合,所以此时需要应用程序提供报文的到达确认、排序和流量控制等功能。通常情况下,UDP采用实时传输机制和时间戳来传输语音和视频数据。

UDP总结:

UDP不提供重传机制,占用资源小(头部只有8B),处理效率高。

一些时延敏感额流量,如语音、视频等,同时使用UDP作为传输协议。(延迟的变量叫做抖动)

 

2、TCP

面向连接、可靠字节流服务。只支持单播,有滑动窗口机制。

TCP头部:

传输层协议--TCP与UDP

S.port:源主机的应用程序使用的端口  16位

D.port:目的主机的应用程序使用的端口  16位

Seq.num:32位***   Fin和Syn占用***

Ack.num:32位确认号  用于标识接收端确认收到的数据段,确认收到+1

Header length:4位头部信息  表示头部信息是20-60字节

Window:16位窗口大小,表示接收方期望通过单次确认而收到的数据的大小

Check sum:16位校验和,校验整个TCP报文(头部和数据)  65535B

TCP建立连接过程(3次握手):因为第2和3报文时间很短,间隔可以忽略,所以此处合二为一称作SYN+ACK报文

传输层协议--TCP与UDP

        因为TCP支持全双工模式进行传输数据,这需要在同一时刻两个方向都快可以进行数据传输。因此在进行数据传输前通过三次握手建立连接,因为要建立双向传输,所以需要进行两次收发(如图),因为第2,3次间隔时间可以忽略不记,所以最后形成三次握手。

TCP数据传输:

传输层协议--TCP与UDP

目的设备接收到源设备发送的数据段时,会向源端发送确认报文,源设备收到确认报文后,继续发送报文。

TCP流量控制:

传输层协议--TCP与UDP

 **TCP采用滑动窗口技术通过动态改变窗口的大小来实现端到端设备之间的数据传输进行流量控制。

此处引入了MSS概念(最大报文段长度 Maximum Segment Size):用来约束每个TCP连接报文段最大数据长度。

主要是为了避免在数据链路层进行分段。因为MTU最大为1500。IP报头为20B(一般),TCP报头为20B(一般)。因此MSS一般为1460B。如图中双方互相协商的MSS是1024B。

Windows是窗口大小,通过协商接收方的窗口大小,来进行验证,使得发送方发送的数据填满接收方窗口大小的内存时再进行验证,提高效率。

TCP中断连接(4次挥手) :同理需要结束双工。因为第2个报文,或许会存在B对A的数据未发送完的情况,因此2,3不能合并。

传输层协议--TCP与UDP