三分钟带你了解TCP协议和UDP

■TCP协议介绍

■TCP/IP协议族的传输层协议

●TCP (Transmission Control Protocol )
◆传输控制协议
●UDP (User Datagram Protocol )
◆用户数据报协议
●TCP和UDP运行在传输层

■TCP报文格式

TCP协议
■TCP是面向连接的、可靠的进程到进程通信的协议
■TCP提供全双工服务,即数据可在同一时间双向传输
■TCP报文段
     ●TCP将若干个字节构成一个分组, 叫报文段(Segment)
     ●TCP报文段封装在IP数据报中
三分钟带你了解TCP协议和UDP

序号:发送端为每个字节进行编号,便于接收端正确重组。
当TCP从进程接收数据字节时,把它们分片成数据段存储在发送缓存中,并对每一个字节进行编号。当数据到达目的地后,接收端会按照这个序号把数据重新排列,保证数据的正确性。

确认号 :对发送端的确认信息。
20接收端响应消息时将用会它来告诉发送端这个序号之前的数据段都E经收到,如确认号是x,就是表示前X-1个数据段都已
经收到。

首部长度:用它可以确定TCP首部数据结构的字节长度。一般情况下TCP首部是20字节,但首部长度最大可以扩展为60字节

控制位:

URG: 紧急位。紧急指针有效位。
ACK:确认位。只有当ACK=1时,确认***字段才有效;当ACK=0时,确认号字段无效。
PSH:急迫位。标志位为1时,要求接收方尽快将数据段送达应用层。
RST:重置位。当RST值为1时,通知重新建立TCP连接。
SYN: 同步(连接)位。同步序号位,TCP需要建立连接时将这个值设为1。
FIN:断开位。当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1。

窗口大小:说明本地可接收数据段的数目。这个值的大小是可变的,当网络通畅时接收端响应消息会将这个窗口值变大以
加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP中的流量控制机制就是依靠变化窗口的大小
实现的。
比如下载速度从一-开始的几KB逐渐提升到几MB的过程。

校验和:用来做差错控制。字段检验的范围包括首部和数据这两部分。数据段在发送时和到达目的地时会进行校验和计算
,若这两次的校验和一-致,则说明数据基本是正确的,否则将认为该数据被破坏,接收端将丢弃该数据。

紧急指针:和URG配合使用,当URG=1时有效。

■TCP三次握手

.
三分钟带你了解TCP协议和UDP
1)第一次握手:pc1将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发送给pc2,pc1进入SYN_SENT状态,等待pc2确认。
(2)第二次握手:pc2收到数据包后由标志位SYN=1知道pc1请求建立连接,pc2将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给pc1以确认连接请求,pc2进入SYN_RCVD状态。
(3)第三次握手:pc1收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给pc2,pc2检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,pc1和pc2进入ESTABLISHED状态,完成三次握手,随后pc2与pc1之间可以开始传输数据了。

■TCP四次挥手

三分钟带你了解TCP协议和UDP

由于TCP连接是全双工的,因此,每个方向都必须要单独进行关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到一个FIN只是意味着这一方向上没有数据流动了,即不会再收到数据了,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。
(1)第一次挥手:pc1发送一个FIN,用来关闭pc1到pc2的数据传送,pc1进入FIN_WAIT_1状态。
(2)第二次挥手:pc2收到FIN后,发送一个ACK给pc1,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),pc2进入CLOSE_WAIT状态。
(3)第三次挥手:pc2发送一个FIN,用来关闭pc2到pc1的数据传送,pc2进入LAST_ACK状态。
(4)第四次挥手:pc1收到FIN后,pc1进入TIME_WAIT状态,接着发送一个ACK给pc2,确认序号为收到序号+1,pc2进入CLOSED状态,完成四次挥手。

■UDP协议介绍

udd协议
    ●无连接,不可靠的传输协议
    ●花费的开销小
udp报文的首部格式
三分钟带你了解TCP协议和UDP
    UDP长度:用来指出UDP的总长度,为首部加上数据
    校验和:用来完成对UDP数据的差错检验,它是UDP协议提供的唯一的可靠机制

■常见协议及其端口

端口 协议 说明
69 TFTP 简单的文件传输路口
111 RPC 远程过程调用
123 TNTP 网络时间协议
80 HTTP 请求响应交互
21 FTP 用于控制连接FTP服务器
53 DNS 用于连接DNS服务器
25 SMTP 用于发送邮件
110 POP3 用于接收邮件
22 SSH 用于计算机之间的远程加密登录