这里写自定义目录标题
TCP和UDP协议
一、TCP协议
1.TCP协议的介绍
TCP是全面连接、可靠的进程到进程通信的协议。
TCP提供全双工的服务,数据在同一时间双向传输。
每个TCP都有发送缓存数据和接收数据,用于临时储存数据的功能。
2.TCP报文段的首部格式
1.源端口号(16):发送方进程的端口号
2.目标端口号(16):接受端进程的端口号
3.序号(32):发送端为每个字节进行编号,便于接收端正确重组
4.确认号(32):对发送端的确认信息
5.首部长度(4):确定TCP首部数据结构的字节长度
6.保留(6)
7.控制位:
URG:紧急位。紧急指针有效位
ACK:确认位。只有当ACK=1时,确认序列号字段才有效:当ACK=0时,确认号字段无效。(已经连接状态)
PSH:急迫位。标志位为1时,要求接收方尽快将数据段送达应用层。
RST:重置位。当RST为1时,通知重新建议TCP连接。
SYN:同步(请求连接)位。同步序号位,TCP需要建立连接时将这个值设为1。
FIN:断开位。当TCP完成数据传输需要断开连接时,提出断开连接的一方将这个值设为1.
8.窗口大小:说明本地可接收数据段的数目。这个值得大小是可变的,当网络通畅时接收端相应消息会会将这个窗口值变大以加快传输速度,当网络不稳定时减小这个值可保证网络数据的可靠传输,TCP中的流量控制机制就是依靠变化窗口的大小实现的。
比如下载速度从一开始的几KB逐渐提升到几MB的过程。
9.校验和:用来做差错控制。字段检验的范围包括首部和数据这两部分,数据段在发送时和到达目的地时会进行校验和计算,若这两次的校验和一致,则说明数据基本是正确的,否则将认为该数据已被破坏,接收端将丢弃该数据。
10.紧急指针:和URG配合使用,当URG=1时有效。
11.选项:在TCP首部可以有多达40字节的可选信息,例如,最大报文段长度MSS(MaximumSegment Size)。MSS告诉对方TCP:我的缓存所能接收的报文段的数据字段的最大长度是MSS个字
3.TCP连接(三次握手)
解析
seq序列号
ack=x+1表示确认收到
ack=y+1表示服务器的连接请求收到了
SYN-SENT(同步已发送状态)
SYN-RCVD(同步收到)
ESTABLISHED(已建立链接)
第一次握手:PC1向PC2发送请求连接(同步已发送状态)
第二次握手:PC2收到PC1的请求连接的信息后,然后给PC1发送消息,表示自己已经收到了,并且同意连接。(同步收到)
第三次握手:PC1收到PC2的信息后,还要给PC2发消息确认自己已经收到了(已建立链接)
举例说明:你邀请你朋友打游戏,发送组队请求(第一次握手),你朋友收到你发的组队信息后,点击进入组队(第二次握手),然后你看到你朋友进了组队房间,你再点确认开始游戏(第三次握手)。
4.TCP连接终止(四次挥手)
解析:
FIN-WAIT-1终止等待-1
CLOSE-WAIT关闭等待
FIN-WAIT-1(终止等待-2)
TIME-WAIT(时间等待)后进入CLOSED,服务端会接收到这个确认包之后
第一次挥手:PC1发送FIN/ACK给PC2,表示自己要断开连接。(终止等待-1)
第二次挥手:PC2收到PC1请求断开连接的消息后,要发送ACK报文给PC1,表示确认自己收到了信息。(关闭等待)
第三次挥手:PC2也要发送FIN/ACK给PC1,表示自己要断开连接.(终止等待-1)
第四次握手:PC1收到PC2请求断开连接的消息后,也要发送ACK报文给PC1,然后断开连接。(时间等待)
举例说明:
1、客户端主机C说:“我没有数据了,断开连接吧。 ”
2、服务器S说:“好,但是我还有数据(不断给C发送数据,此时C已经不能给S发送数据了,但是必须要就收S发来的数据)。”
3、(当S给C发完数据后)S说:“我发完了,断开连接吧。”
4、C说:“好,断开连接吧。”
小贴士:
客户端向服务器发送第四次报文时,如果服务器没有收到,那么服务器会再次向客户端发送第三步的FIN包,客户端等待2MSL的时间就是等服务器再次发第三步的报文,2MSL之后如果客户端没有收到,那么客户端就断开连接。
第二次挥手时,如果服务器的数据已经传输完,那么会直接传FIN=1的报文,没有关闭等待状态,一共只有三次挥手。
MSL(Maximum Segment Lifetime)是指“报文最大生存时间”。
5.常通TCP端口号及功能
协议 | 端口 | 说明 |
---|---|---|
ETP | 21 | FTP服务器所放开的控制端口 |
TELNET | 23 | 用远程登陆,可以远程控制管理目标计算机 |
SMTP | 25 | SMTP服务器开端口,用于发送邮件 |
HTTP | 80 | 超文本传输协议 |
6.TCP/IP和OSI模型的比较
相同点
(1)两者都是以协议栈的概念为基础
(2)协议栈中的协议彼此相互独立
(3)下层对上层提供服务
不同点
(1)OSI是先有模型;TCP/IP是先有协议,后有模型
(2)OSI是国际标准,适用于各种协议栈;TCP/IP实际标准,只适用于TCP/IP网络
(3)层次数量不同
作者:聂鲁达的邮差
链接:https://juejin.cn/post/7052247387305312293
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
二、UDP协议
1.UDP协议介绍
缺点
无连接、不保证可靠性的协议,它的可靠性由上一层协议来保证。
优点
数据传输时能实现最小的开支。
2.UDP报文段格式
各字段的含义:
- 源端口号:标识数据发送端的进程,和tcp的端口号类似。
- 目标端口号:标识数据接收端的进程,和tcp的端口号类似。
- UDP长度:指UDP的总长度(首部+数据)。
- 检验和:对UDP数据的差错查验,计算同TCP的校验类似。是UDP提供的唯一可靠机制。
3.常用UDP端口号及其功能
协议 | 端口号 | 说明 |
---|---|---|
TFTP | 69 | 简单文件传输协议 |
RPC | 111 | 远程传输调用 |
NTP | 123 | 网络传输协议 |
三、TCP和UDP的区别
面向连接网络协议和无连接网络协议
面向连接网络协议:是指通信双方之间在进行通信之前要先建立连接。比如打电话,双方通话前需要先建立连接。等数据发送结束后,双方再断开连接。
无连接网络协议:是指通信双方不需要事先建立一条通信线路,而是把每个带有目的地址的包送到网络线路上,由系统自主选定路线进行传输。比如QQ发送信息。
作者:聂鲁达的邮差
链接:https://juejin.cn/post/7052247387305312293
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
TCP和UDP的区别:
UDP | TCP | |
---|---|---|
是否连接 | 无连接 | 面向连接 |
是否可靠 | 不可靠传输,不使用流量控制和拥塞控制 | 可靠传输,使用流量控制和拥塞控制 |
连接对象个数 | 支持一对一、一对多、多对一、多对多 | 只能一对一通信 |
传输方式 | 面部报文 | 面向字节流 |
首部开销 | 首部开销小,仅仅8字节 | 首部最小20字节 ,最大60字节 |
适应场景 | 适用于实时应用 (IP电话,视频会议) | 适用于要可靠传输的应用(文件传输) |
3.模式选择
混杂模式与普通模式
- 混杂模式:混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。
- 普通模式:网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。
一般来说,混杂模式不会影响网卡的正常工作,多在网络监听工具上使用。
总结
TCP 报文段首部长度为20~60,首部格式中有六个重要的控制位。UDP的首部格式简单的多。
TCP 建立连接需要三次挥手,而断开连接需要四次挥手。