TCP和UDP协议
1、TCP传输控制协议
2、UDP用户数据报协议
TCP协议定义:TCP协议是面向连接的、可靠的进程到通讯的协议(在建立通讯之前先要建立连接)。并且提供全双工服务(数据可在同时进行双向传输;全双工。每个TCP协议都有发送缓存与接收缓存,用来存储临时数据)
TCP报文段:
将诺干个字节构成分组
TCP(数据段)报文段封装在IP数据报文中
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断开的四次挥手
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半关闭状态(应用:离线下载)
1、发送FIN+ACK(FIN=1、ACK=1) 客户端进入 FIN-WAIT-1状态
2、发送ACK报文(ACK=1)副武器进入CLOSE-WAIT状态,客户端接收到这个确认包后,进入FIN-WAIT-2状态
此时PC2服务器仁能给PC1发送数据
TCP常用端口以及作用
补充: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常用端口 图
补充:DNS 53号端口(UDP协议此处是解析域名用的)