| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> TCP和UDP的区别 适用场合 三次握手和四次挥手 -> 正文阅读 |
|
[网络协议]TCP和UDP的区别 适用场合 三次握手和四次挥手 |
1.TCP和UDP的区别???????1.1 共同点? ? ? ? ? ? ? ? 同为传输层协议 ? ? ? ? 1.2 不同点? ? ? ? ? ? ? ? TCP:面向连接的,可靠传输,面向字节流传输 ? ? ? ? ? ? ? ? UDP:面向无连接的,不可靠传输,面向报文传输 ? ? ? ? 1.3 适用场景? ? ? ? ? ? ? ? TCP适用场合:文件传输 ? ? ? ? ? ? ? ? ? ? ? ? 1.传输质量要求较高 ? ? ? ? ? ? ? ? ? ? ? ? 2.大尺寸数据 ? ? ? ? ? ? ? ? ? ? ? ? 3.一般用于邮件发送等应用中 ? ? ? ? ? ? ? ? UDP适用场合:实时应用 ? ? ? ? ? ? ? ? ? ? ? ? 1.对实时性要求较高 ? ? ? ? ? ? ? ? ? ? ? ? 2.小尺寸的数据 ? ? ? ? ? ? ? ? ? ? ? ? 3.一般用于视频聊天、直播等 2.三次握手? ? ? ? 2.1 几个重要字段????????? ?????????SYN:同步位? ? ? ? ACK:确认位? ? ? ? FIN:终止位 ? ? ? ? ? ?????????seq:序列号? ? ? ? ?ack:确认号 ? ? ????2.2 简述三次握手过程????????第一次握手:建立连接时,客户端将标志位SYN置为1,随机产生一个值seq = x,并将该数据包发送给服务器,客户端进入SYN-SENT状态,等待服务器确认。(服务器可以确认:客户端的发送能力正常、服务器的接收能力正常。) ? ? ? ? ? 第二次握手:服务器收到数据包后由标志位SYN = 1得到客户端请求连接,服务器将标志位SYN和ACK都置为1,ack = x+1,产生一个随机值seq = y,并将该数据包发送给客户端以确认连接请求,服务器进入SYN-RCVD状态。(客户端可以确认:服务端的接收、发送能力及客户端的接收、发送能力正常,但此时服务器不能确认客户端的接收能力是否正常。) ? ? ? ? 第三次握手:客户端收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack = y+1,并将该数据包送个服务器,服务器再检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,服务器和客户端进入ESTAB-LISHED状态。(服务器可以确认:客户端的发送、接收能力正常,服务器自己的接收、发送能力正常,然后服务器和客户端之间就可以传输数据了。) ? ? ? ? 2.3 简述四次挥手过程? ? ? ? 第一次挥手: 客户端发送一个FIN,用来关闭客户端到服务器的数据传输,客户端进入FIN_WAIT_1状态,其首部:FIN = 1, seq = u。(客户端发起关闭连接的请求) ? ? ? ? 第二次挥手:服务器收到FIN后,发送一个ACK给客户端,确认号为ack = u+1,序列号seq = w,此时服务器进入CLOSE_WAIT状态。 ? ? ? ? 第三次挥手:服务器发送一个FIN,用来关闭服务器到客户端的数据传送,服务器进入LACK_ACK状态。 ? ? ? ? 第四次挥手:服务器收到FIN后,进入到TIME_WAIT状态,接着发送一个ACK给服务器,确认号为seq = u+1,ack = w+1,在经过2MSL(最长报文端寿命)后,服务器进入CLISED状态,本次TCP连接结束,完成第四次挥手。 为什么建立连接握手三次,关闭连接时需要是四次呢? ? ? ? ? 因为握手的时候没有数据传输,服务器发送SYN+ACK的包是合并在一起发送的,减少了一次包的发送;而在挥手(关闭连接)的时候,还存在数据的传输,ACK和FIN报文不能同时发送,只能先确认ACK,然后再发送FIN包,所以四次挥手必须是四次数据包的交互。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:38:42- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |