传输层协议介绍
TCP协议介绍
TCP报文格式
TCP三次握手
TCP四次挥手
UDP协议介绍
常见协议及其端口
TCP/IP协议族的传输层协议
- TCP(传输控制协议)
- UDOP(用户数据报协议)
TCP的协议
*TCP是双向面向连接,可靠的进程到进程通信的协议
*TCP退供全双工服务,即数据可在同一时间双向传输
TCP报文段
*TCP将若干个字节构成一个分组,叫报文段(segment)
*TCP将报文段封装在IP数据报中
源端口号:发送方进程的端口号
目标端口号:接收端进程的端口号。接收端收到数据后。根据这个端口号来确定把数据送到哪个应用程序的进程。
序号:发送端口号为每个字节进行编号,便于接收端正确重组
确认号:对发送段的确认信息
(接收端响应消息时将用会它来告诉发送端这个序号之前的数据段都已经收到,如确认号是X,就是表示前X-1个数据段都已经收到。从而保证数据的可靠性)
首部长度:用它可以确定首部数据结构的字节长度。
(一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节)
窗口大小:说明本地可接收数据段的数目。
(这个值的大小是可变的,当网络通畅时接收端响应消息会将这个窗口值变大以加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP中的流量控制机制就是依靠变化窗口的大小实现的,比如下载速度从一开始的几KB 逐渐提升到几M 的过程。)
控制位:
URG:紧急位。紧急指针有效位。
ACK:确认位。只有当 ACK=1时,确认序列号字段才有效;当 ACK=0时,确认号字段无效。
PSH:急迫位。标志位为1时,要求接收方尽快将数据段送达应用层。
RST:重置位。当 RST 值为1时,通知重新建立 TCP连接。
SYN:同步/连接位。同步序号位,TCP需要建立连接时将这个值设为1。
FIN:断开位。当 TCP 完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1。
校验和:用来做差错控制。
(在发送TCP数据段时,由发送端计算校验和,当到达目的地时又进行一次校验和计算。若这两次的校验和一致,则说明数据基本是正确的,否则将认为该数据已被破坏,接收端将丢弃该数据)
紧急指针:和 URG配合使用,当 URG=1时有效。
选项:在 TCP首部可以有多达40字节的可选信息。
三次招手
-
原理:
-
PC1向PC2发送SYN报文(Seq=x, SYN=1),客户端进入SYN-SEND状态,
-
PC2接收后,向PC1发送SYN+ACK报文(seq=y,ACK=x+1)服务端口进入SYN-RCV状态。
-
PC1接收后,向PC2发送ACK报文(seq=x+1,ACK=y+1,ACK=1) 客户端进入ESTABLSHED状态,当服务器端接收到这个包时,也进入ESTABLISHED状态
四次挥手
-
原理‘
-
PC1向PC2发送FLN/ACK(FIN=1,ACK=1)客户端进入FIN-WAIT-1状态。
-
PC1接收后向pc2发送ACK报文(ACK=1)服务器进入CLOSE-WAIT状态,客户端接收到这个数据包之后,进入FIN-WAIT-2状态。
-
并再向PC1发送FIN/ACK报文(FIN=1,ACK=1)服务器进入LAST-ACK状态,
-
等待来自客户端的最后一个ACK。PC1接收后向PC2发送ACK报文(ACK=1)客户端进入TIME-WAIT状态,后进入CLOSED状态,服务器接收到这个确认包之后,关闭连接,进入CLOSED状态。
UDP的端口协议
UDP协议
- 无连接,不可靠的传输协议
- 花费的开销小
UDP的报文的首部格式
- UDP长度:用于指出UDP的总长度,为首部加上数据
- 校验和:用于完成对UDP数据的差错检验,它是UDP协议提供的唯一的可靠机制
常见的UDP端口号及其功能
- TFTF(简单文件传输协议)
- RPC(远程过程调用)
- NTP(网络时间协议)
- SNMP(简单网络管理协议)