IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP/IP经典问答 -> 正文阅读

[网络协议]TCP/IP经典问答

TCP与UDP的区别

TCP是面向连接的可靠的传输层协议,UDP是面向无连接的不可靠的传输层协议

  • 可靠性:TCP的连接需要经过三次握手、重新确认等连接过程,实时性差,过程复杂,UDP具有较好的实时性,工作效率高,适用于高速传输的通信;
  • 有序性:TCP协议会为你排好序,UDP不提供任何有序的保证,尽最大努力交付,数据包以任何可能的顺序到达;
  • 应用:每条TCP连接只能是点到点,UDP支持1对1,1对多,多队1和多对多的交互通信;

缺点:

TCP:为了实现网络通信的可靠性,使用了复杂的拥塞控制算法,建立了繁琐的握手过程,一旦发生丢包,TCP会将后续的包缓存起来,等前面的包重传并接受到后再继续发送,延时会越来越大,传输效率低、暂用系统资源高

UDP:不可靠、不稳定

三次握手和四次握手机制

关于握手类的问题

1、描述一下三次握手的过程

(1)由客户端发送建立TCP连接请求,其中包含由发送端随机产生的seq序列号x,将报文中的SYN字段设置为1,表示需要建立连接;

(2)服务端回复客户端的连接请求,包含回复端随机生成的seq序列号y,将SYN设置为1,产生ACK字段,ACK在客户端发送来的seq基础上+1回复;

(3)客户端在收到服务端的连接验证后,会使自己的seq序列号+1,并且再次回复ACK验证请求,在服务端发过来的seq上+1回复;

2、描述一下四次握手的过程

(1)客户端发送断开TCP连接的请求报文,报文包含发送端随机生成的seq序列号,且将报文中的FIN字段设置为1,表示需要断开连接;

(2)服务端回复客户端发送的报文,会产生ack字段,ack在客户端发来的seq基础上+1,且随机产生seq序列号;(以便客户端收到消息,知道自己的TCP断开请求得到验证,避免再次发送请求)

(3)服务端在回复完客户端后,不会马上进行TCP连接断开,服务端会先确保断开前,所有传输到A的数据是否已经传输完毕,一旦确认传输完毕,就会将回复报文的FIN字段设置为1,并随机产生序列号seq;

(4)客户端收到服务端的TCP断开请求后,会回复客户端的请求,ack是在服务端发来的seq基础上+1,且随机产生seq序列号,从而完成服务端的请求验证回复;

3、为什么要进行三次握手

(1)如果服务端直接创建了连接并返回数据包给客户端,这个数据包因为网络传输原因丢失了,导致客户端一直没有接收到,客户端可能设置了一个超时时间,时间到了就关闭连接创建的请求,而服务器并不知道客户端是否真正的接收到连接请求,服务器的端口就一直开着,而客户端因为超时严重又会重新发出请求,服务器就会重新开启一个端口连接,这样很多端口一直开着,造成服务器开销的严重浪费;

(2)已经失效的客户端发出请求信息,传输到服务端,服务端以为是客户端发出有效请求,接受后产生错误;

所以我们需要“第三次握手”来确认这个过程,让客户端和服务器端能够及时地察觉到因为网络等一些问题导致的连接创建失败,这样服务器端的端口就可以关闭了不用一直等待。

也可以这样理解:“第三次握手”是客户端向服务器端发送数据,这个数据就是要告诉服务器,客户端有没有收到服务器“第二次握手”时传过去的数据。若发送的这个数据是“收到了”的信息,接收后服务器就正常建立TCP连接,否则建立TCP连接失败,服务器关闭连接端口。由此减少服务器开销和接收到失效请求发生的错误。

4、客户端为什么在TIME_WAIT阶段等2MSL?

(1)目的:是确保服务器收到客户端发出的ACK确认报文

(2)原因:当客户端发出最后的ACK确认报文时,并不能确定服务端能够收到该报文,所以客户端在发送完ACK确认报文后,会设置一个时长为2MSL的计时器,MSL即Maximun Segment Lifetime, 一段TCP报文在传输过程中的最大生命周期,2MSL即是服务端发出为FIN报文和客户端发出ACK确认报文所能保持有效的最大时长;服务器在1MSL内没有收到客户端发出的ACK确认报文,就会再次向客户端发出FIN报文。

(3)补充:如果客户端在2MSL内,再次收到了来自服务器端的FIN报文,说明服务器端由于各种原因没有接收到客户端发出的ACK确认报文。客户端再次向服务器端发出ACK确认报文,计时器重置,重新开始2MSL的计时;否则客户端在2MSL内没有再次收到来自服务器端的FIN报文,说明服务器端正常接收了ACK确认报文,客户端可以进入CLOSED阶段,完成“四次挥手”。

TCP用什么方式来解决拥塞控制

拥塞控制:分组丢失,发送方继续重传,导致网络拥塞程度更高

TCP解决算法:慢开始、拥塞避免、快重传、快恢复

TCP/IP如何保证可靠性

1)三次握手

2)超时重发

3)丢弃重复数据

4)流量控制、拥塞控制

控制窗口滑动的过程是怎样的

(1)接收端将自己可以接收的缓冲区的大小,放入TCP首部中的“窗口大小”字段,通过ACK报文来通知发送端,滑动窗口是接收端用来控制发送端发送数据的大小,从而达到流量控制;

(2)其实发送方的窗口上限,是取值拥塞窗口和滑动窗口两者的最小值;

滑动窗口和拥塞窗口有什么区别

相同点:都是控制丢包的作用,实现机制都是让发送方发的慢一点

不同点:控制的对象不同

(1)流量控制的对象是接收方,怕发送方发的太快,使接收方来不及处理;

(2)拥塞控制的对象是网络,怕发送方发的太快,造成网络拥塞,使得网络来不及处理;

解决粘包和拆包的方法有哪些

(1)在数据尾部增加特殊字符进行分割

(2)将数据定为固定大小

(3)将数据分为两部分,一部分是头部,一部分是内容体,其中头部结构大小固定,且有一个字段声明内容体的大小

HTTP的请求,程序一般经历了哪几个步骤

用浏览器打开链接时,计算机的工作步骤

1)解析域名

2)发起TCP三次握手,建立连接

3)基于TCP发起HTTP请求

4)服务器响应HTTP请求,并返回数据

5)客户端解析返回数据

HTTP是安全的吗?怎么做到HTTP协议传输?

1)不安全,HTTP都是明文数据传输,容易被第三方截取;

2)安全传输可以使用HTTPS协议

HTTP和HTTPS的区别

HTTP协议的连接是无状态的,明文传输

HTTPS则是由SSL/TLS+HTTP协议构建的有加密传输、身份认证的网络协议

session和cookie的区别

1)存储位置,cookie是保存在客户端上的数据,session是保存在服务器上

2)存储方式,cookie只能保管ASCLL字段符串,session能够存储任何类型的数据

3)隐私方式,cookie只对客户端可见,session存储在服务器上,对客户端是透明的

4)存储容量,cookie保存的数据小,session没有上限

参考:

https://www.cnblogs.com/xmanblue/p/14191429.html

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-04 11:34:02  更:2021-08-04 11:34:22 
 
开发: 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年5日历 -2024/5/3 20:54:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码