博客
关于我
5.网路技术——传输层:TCP协议+UDP协议
阅读量:342 次
发布时间:2019-03-04

本文共 1441 字,大约阅读时间需要 4 分钟。

目录

1.TCP协议

1.1 TCP协议介绍

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议

1.2 TCP报文格式

将若干个字节构成一个分组,叫报文段(Segment)

将报文段封装在IP数据报中
IP首部+TCP报文段
源端口号:为发送方进程对应的端口号
目标端口号:对应的是接收端的进程,根据这个端口确定数据送给那个应用程序的进程
序号 :TCP每个方向的编号都是相互独立的,当字节都被编上号后,TCP给每个报文指派一个序号
确认号:对发送端的确认信息
首部长度:确定首部数据结构的字节长度,一般是20字节,最大可达到60字节
保留:扩展功能,待使用
控制位:6个控制位 URG ACK PSH RST SYN FIN
URG:紧急指针有效位
ACK:ACK=1 有效
PSH:标志位=1 时要求接收方尽快将数据送达到应用层
RST:RST=1 通知重新建立TCP连接
SYN:同步序号位 ,建立连接时 SYN=1
FIN:发送端完成任务后,需要断开时 FIN=1
窗口大小 会根据网络的带宽
校验和 : 校验是否完整
紧急指针:当URG=1 才有效
选项:在TCP首部可以有多达40字节的可选信息

1.3 TCP的三次握手与四次挥手

TCP建立连接的三次握手:

第 1 次握手建立连接时,客户端向服务器发送 SYN 报文(SEQ=x,SYN=1),并进入 SYN_SENT 状态,等待服务器确认
第 2 次握手实际上是分两部分来完成的,即 SYN+ACK(请求和确认)报文。
服务器收到了客户端的请求,向客户端回复一个确认信息(ACK=x+1)
服务器再向客户端发送一个 SYN 包(SEQ=y)建立连接的请求,
第 3 次握手,是客户端收到服务器的回复(SYN+ACK 报文)。此时,客户端也要向服务器发送确认包(ACK),完成 3 次握手

TCP断开连接的四次挥手:

第一次挥手:A数据传输完毕需要断开连接,A的应用进程向B发出报文段(FIN = 1),并停止再发送数据,等待B的确认。

第二次挥手:B收到连接释放报文段后即发出确认报文段(ACK=1,),B进入半关闭等待状态,而A收到B的确认后,等待B发出的报文段。

第三次挥手:当B数据传输完毕后,B发出连接释放报文段(FIN = 1,ACK = 1),等待A 的最后确认。

第四次挥手:A收到B的连接释放报文段后,对此发出确认报文段(ACK = 1,),A进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,A才进入CLOSE状态。

1.4 TCP的端口号及其功能

2.UDP协议

2.1 UDP协议介绍

Internet 协议集支持一个无连接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。

UDP协议:1)无连接、不可靠的传输协议
2)花费的开销小

2.2 UDP报文的首部格式

UDP报文的首部格式:

源端口号:用来标识数据发送端的进程
目标端口号:用来标识数据接收端的进程
UDP长度:用来指出UDP的总长度,为首部加上数据
UDP校验和:用来完成对UDP数据的加错校验,是UDP协议提供的唯一的可靠机制。

2.3 UDP报文的端口号及其功能

转载地址:http://vpbe.baihongyu.com/

你可能感兴趣的文章
mudbox卸载/完美解决安装失败/如何彻底卸载清除干净mudbox各种残留注册表和文件的方法...
查看>>
mysql 1264_关于mysql 出现 1264 Out of range value for column 错误的解决办法
查看>>
mysql 1593_Linux高可用(HA)之MySQL主从复制中出现1593错误码的低级错误
查看>>
mysql 5.6 修改端口_mysql5.6.24怎么修改端口号
查看>>
MySQL 8.0 恢复孤立文件每表ibd文件
查看>>
MySQL 8.0开始Group by不再排序
查看>>
mysql ansi nulls_SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON 什么意思
查看>>
multi swiper bug solution
查看>>
MySQL Binlog 日志监听与 Spring 集成实战
查看>>
MySQL binlog三种模式
查看>>
multi-angle cosine and sines
查看>>
Mysql Can't connect to MySQL server
查看>>
mysql case when 乱码_Mysql CASE WHEN 用法
查看>>
Multicast1
查看>>
MySQL Cluster 7.0.36 发布
查看>>
Multimodal Unsupervised Image-to-Image Translation多通道无监督图像翻译
查看>>
MySQL Cluster与MGR集群实战
查看>>
multipart/form-data与application/octet-stream的区别、application/x-www-form-urlencoded
查看>>
mysql cmake 报错,MySQL云服务器应用及cmake报错解决办法
查看>>
Multiple websites on single instance of IIS
查看>>