TCP和UDP协议

1、TCP传输控制协议

2、UDP用户数据报协议


TCP协议定义:TCP协议是面向连接的、可靠的进程到通讯的协议(在建立通讯之前先要建立连接)。并且提供全双工服务(数据可在同时进行双向传输;全双工。每个TCP协议都有发送缓存与接收缓存,用来存储临时数据)

TCP报文段:

将诺干个字节构成分组

TCP(数据段)报文段封装在IP数据报文中 27194088468_4cb0141fc8_b.jpg

TCP报文段名词解释

源端口号:发送方进程的端口号

目标端口号:接收端进程的端口号

!序号:发送端为每个字节进行编号,便于接收端正确重组

!确认号:发送端的确认信息

首部长度:用它可以确定TCP首部数据结构的字符长度 (一般20字节,最大60字节)

!窗口大小:本地可接受数据段的数目(窗口大小是可变的)——当网络稳定,加大窗口的值变大来加快传输速度。当网络不稳定时候减小这个值来保证稳定传输。TCP中流量控制机制就是控制窗口值大小实现的

校验和:做差错控制的。(校验头部和数据的正确性)

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

控制位:

URG:紧急位-紧急指针的有效性

!ACK:确认位-只有当ACK=1时,切人序号字段才有效。当ACK=0的时候,确认号字段无效

PSH:急迫位 =1,接收方尽快将数据段给应用层

RST:重置位 =1,通知重新建立TCP连接

!SYN:同步(连接)位、同步序号位 =1 TCP建立连接时候

!FIN:断开位- =1TCP断开连接时候

!TCP协议三次握手过程

1、发送SYN报文,请求建立连接(seq=x,syn=1) 客户端进入syn—send状态

2、发送SYN+ACK报文(Seq=y,ack(确认号)=x+1,syn=1,ACK(控制位)=1) 服务器进入SYN-RCV状态

3、发送ACK报文(Seq=x+1,ack(确认号)=y+1,ACK(控制位)=1) 客户端进入ESTABLISHED状态{翻译:已连接},当服务器接收到这个包的时候,也进入ESTABLISHED状态{翻译:已连接}

ps:控制位为关键点、Seq表示序号 TCP建立连接的三次握手过程.png

TCP断开的四次挥手

1、发送FIN+ACK(FIN=1、ACK=1) 客户端进入 FIN-WAIT-1状态

2、发送ACK报文(ACK=1)服务器进入CLOSE-WAIT状态,客户端接收到这个确认包后,进入FIN-WAIT-2状态

3、发送FIN+ACK报文(FIN=1,ACK=1)服务器端进入LAST-ACK状态,等待来自客户端的最后一个ACK

4、发送ACK报文(ACK=1)客户端进入TIME-WAIT状态,后进入CLOSED状态。服务器接收到这条确认包后。关闭连接,进入CLOSED状态。 TCP断开的4次挥手(抄写).png

TCP半关闭状态(应用:离线下载)

1、发送FIN+ACK(FIN=1、ACK=1) 客户端进入 FIN-WAIT-1状态

2、发送ACK报文(ACK=1)副武器进入CLOSE-WAIT状态,客户端接收到这个确认包后,进入FIN-WAIT-2状态

此时PC2服务器仁能给PC1发送数据

TCP常用端口以及作用

TCP常用端口号以及功能.png

补充:SSH 22号端口(linux虚拟机用的到)

​ DNS 53号端口 (TCP协议此处作用是连接DNS服务器)

一次完整的HTTP请求的过程

1、输入域名——DNS解析成IP地址——对应IP地址 2、使用HTTP/HTTPS连 (TCP协议) 3、先建立TCP连接 (TCP协议的三次握手) 4、客户端给服务端发送请求 5、服务器处理请求,响应返回发送给客户端 4、断开连接 (TCP协议四次握手)

UDP协议

定义:UDP是无连接、不保证可靠性的传输协议。发送端不关心发送的数据是否到达目标主机、数据是否出错等。收到数据的主机也不会告诉发送方是否收到数据。它的可靠性由上层协议保证。传输速度更快,效率更高。 注:无连接的网络协议,通讯双方不需要事先建立一条通讯线路,而是把每个带有目的地址的包送到网络上,系统自主选择路线进行传输(例如QQ)

缺点:无连接、不可靠的协议。 优点花费开销小、效率高、速度快

UDP报文首部格式

UDP协议21.png

UDP常用端口 图

UDP常用端口号.png 补充:DNS 53号端口(UDP协议此处是解析域名用的)