博客
关于我
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/

你可能感兴趣的文章
mysql5.7性能调优my.ini
查看>>
MySQL5.7新增Performance Schema表
查看>>
Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
查看>>
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>
Mysql8.0的特性
查看>>
MySQL8修改密码报错ERROR 1819 (HY000): Your password does not satisfy the current policy requirements
查看>>
MySQL8修改密码的方法
查看>>
Mysql8在Centos上安装后忘记root密码如何重新设置
查看>>
Mysql8在Windows上离线安装时忘记root密码
查看>>
MySQL8找不到my.ini配置文件以及报sql_mode=only_full_group_by解决方案
查看>>