UDP协议
用户数据报协议UDP概述
UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能
UDP的主要特点:
-
UDP是无连接的,减少开销和发送数据之前的时延
-
UDP使用最大努力交付,即不保证可靠交付,可靠性由UDP上层即应用层保证
-
UDP是面向报文(面向应用层的报文,直接交付给下一层)的,适合一次性传输少量数据的网络应用
4.UDP无拥塞控制,适合实时应用(比如IP电话、视频会议)
5.UDP首部开销小,只有8B,TCP20B
UDP首部格式
各字段意义如下:
- 源端口。源端口号。在需要对方回信时选用,不需要时可用全0。
- 目的端口。目的端口号。这在终点交付报文时必须使用到。
- 长度。UDP数据报的长度(包括首部和数据),其最小值是8 (仅有首部)。
- 校验和。检测UDP数据报在传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全0。
UDP校验
- 伪首部和全0字节是不发送的,仅供校验使用
TCP协议
TCP协议特点和TCP报文段
TCP主要特点
1.TCP是面向连接(虚连接)的传输层协议
2.每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
3.提供可靠交付的服务,无差错、不丢失、不重复、按序到达。可靠有序,不丢不重
4.提供全双工通信
5.TCP面向字节流
TCP报文段首部格式
TCP连接管理
TCP连接管理
TCP连接传输分为三个阶段:
TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器。
TCP的连接建立
三次握手
- seq为序号字段,标明本次报文段数据部分的第一个字节的序号
- ack是
确认号字段
,告诉对方我接下来应该接收的数据是从字节序号ack开始的数据 - ACK是确认位,0时
确认号字段ack
无效,1时确认号字段ack
有效 - SYN是同步位
TCP提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。
- 服务器端的资源是在完成第二次握手时分配的
- 而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到SYN洪泛攻击。
SYN洪泛攻击
TCP的连接释放
四次挥手
TCP连接建立和释放的总结如下
- 1)连接建立。分为3步:
①SYN=1,seq=x。
②SYN=1, ACK=1, seq=y, ack=x+ 1。
③ACK=1,seq=x+1, ack=y+ 1。
- 2)释放连接。分为4步:
①FIN=1, seq= u
②ACK=1, seq=v, ack=u+ 1。
③FIN=1,ACK=1, seq=w,ack=u+ 1。
④ACK=1, seq=u+1, ack=w+ 1。
关于连接和释放,ACK、 SYN、 FIN 一定等于1
TCP可靠传输
TCP可靠传输
序号
TCP协议面向字节流,因此TCP传输时以字节为单位,对字节依次编号。实际发送会把多个字节放在一起组成报文段发送,报文段大小不定,取决于链路层MTU
确认
发送方在收到对发送报文段的确认之前,TCP缓存区应保留报文段
接收方可在合适时候发送确认报文段,也可在要发送数据时把确认信息捎带上,即捎带确认
接收方采用累计确认,只确认数据流当中至第一个丢失字节为止的字节