TCP & UDP
OSI七层中的传输层 or TCP/IP四层中的传输层
网络层只把分组发送到目的主机,但是真正通信的并不是主机而是主机中的进程。传输层提供了进程间的逻辑通信,传输层向高层用户屏蔽了下面网络层的核心细节,使应用程序看起来像是在两个传输层实体之间有一条端到端的逻辑通信信道
一、传输层
传输层位于OSI七层
中的第四层,TCP/IP四层
中的第三层
作用:
🔸 负责将上层应用数据进行分段
和重组
,并将他们组合成数据流形式(封装TCP报头或UDP报头)
🔸 提供端到端
的数据传输服务(使用了套接字:IP+端口号)
两个协议:TCP
和UDP
二、TCP
TCP的报文格式
TCP报头长度一般为20字节
,但可以变长至60字节。TCP报头有很多控制信息,用于可靠传输、差错控制、流量控制等。发送数据前,先要和对方TCP三次握手建立连接。
📌 使用TCP时必须小心,因为TCP是一个没有记录边界的字节流协议。
引发的问题:粘包现象。TCP本身并不提供记录结束标志:如果应用程序需要确定记录的边界,它就要自己去实现,已有一些常用的方法可供选择。
2-1 重要字段说明
ACK:接收顺序号有效
SYN:对顺序号同步,用于建立连接
FIN:数据传输完成,终止连接
窗口:用于流量控制
2-2 TCP三次握手
注意:发送方和接收方的seq不一定要从0开始,seq用于识别发送了多少字节
WireShark三次握手抓包分析
源IP: 172.16.254.100
目标IP:172.16.254.31
🔹 第一次握手
🔹 第二次握手
🔹 第三次握手
三、UDP
UDP的报文格式:
源端口(2Byte) | 目标端口(2Byte) |
---|---|
段长(2Byte) | 校验和(2Byte) |
UDP报头长度共8字节
,开销极小,不连接对方,直接发送数据。
使用UDP协议的应用层协议有:DNS(端口号:53)、DHCP(端口号:67)...
四、TCP和UDP的比较
传输控制协议(TCP) | 用户数据包协议(UDP) |
---|---|
面向连接 | 面向无连接 |
可靠传输 | 不可靠传输 |
开销大 | 开销小 |
流控以及窗口机制 | 尽力而为的传输 |
应用层协议对应的使用传输层协议以及端口号