传输层协议介绍
TCP和UDP协议:
TCP(Transmission Control Protocol )
传输控制协议
UDP(User Datagram Protocol )
用户数据报协议
TCP协议:
特点:TCP是面向连接的、可靠的进程到进程通信的协议
TCP提供全双工服务,即数据可在同一时间双向传输
TCP报文段:TCP将若干个字节构成一个分组,叫报文段(Segment)TCP报文段封装在IP数据报中
TCP报文段:
序号:发送端为每个字节进行编号,便于接收端正确重组
确认号:用于确认发送端的信息
窗口大小:用于说明本地可接收数据段的数目,窗口大小是可变的
URG:紧急指针,当URG=1时表明紧急指针字段有效,告诉报文中有紧急数据
ACK:确认指针,当ACK=1时,确认字段有效
PSH:推送指针,当两个进程进行交互通信时,用于实时响应
RST:复位指针,当RST=1时,表示TCP中出现重大差错,必须释放连接
SYN:同步指针,在建立连接使用与同步序号,当SYN=1 ARK=0时,连接请求报文,当SYN=1 ACK=1时,链接为响应报文
FIN:终止指针,用于释放连接
² TCP三次握手,四次挥手
TCP建立连接的过程被称为三次握手
- l 客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
- l 服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
- l 客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
TCP断开连接的过程被称为四次挥手
- l 首先客户端发送第一个FIN将执行主动关闭,服务器收到这个FIN执行被动关闭。
- l 当服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
- l 同时TCP服务器还向应用程序(即丢弃服务器)传送一个文件结束符。接着这个服务器程序就关闭它的连接,导致它的TCP端发送一个FIN。
- l 客户端必须发回一个确认,并将确认序号设置为收到序号加1。
常用的TCP端口号及其功能
UDP协议
UDP是一个面向无连接、不可靠的传输协议,发送端不关心发出的数据是否达到目标主机,数据是否出错等。
但UDP花费的开销小,UDP部首结构简单,在传输时能实现最小的开销而且传输数据块能实现一对多,多对一的传输
UDP长度:用来指出UDP的总长度,为首部加上数据
校验和:用来完成对UDP数据的差错检验,它是UDP协议提供的唯一的可靠机制