TCP/UDP常见考点

1. TCP连接过程

1.1 三次握手

客户端 服务端 SYN=1 seq=x SYN=1 ACK=1 seq=y ack=x+1 ACK=1 seq=x+1 ack=y+1 客户端 服务端
  • 第一次握手:客户端向服务端发起建立连接请求,客户端会随机生成一个起始序列号 x x x,客户端向服务端发送的字段中包含标志位 S Y N = 1 SYN=1 SYN=1,序列号 s e q = x seq=x seq=x;
  • 第二次握手:服务端在收到客户端发来的报文后,会随机生成一个服务端的起始序列号 y y y,然后给客户端回复一段报文,其中包括标志位 S Y N = 1 SYN=1 SYN=1 A C K = 1 ACK=1 ACK=1,序列号 s e q = y seq=y seq=y,确认号 a c k = x + 1 ack=x+1 ack=x+1;
  • 第三次握手:客户端收到服务端发来的报文后,会再向服务端发送报文,其中包含标志位 A C K = 1 ACK=1 ACK=1,序列号 s e q = x + 1 seq=x+1 seq=x+1,确认号 a c k = y + 1 ack=y+1 ack=y+1

1.2 四次挥手

客户端 服务端 FIN=1 seq=p ACK=1 seq=q ack=p+1 ACK=1 seq=q ack=p+1 ACK=1 seq=x+1 ack=y+1 客户端 服务端
  • 第一次挥手:客户端发出连接释放报文段,其中 F I N = 1 , s e q = p FIN=1,seq=p FIN=1seq=p,并停止再发送数据,主动关闭TCP连接,等待服务端的确认;
  • 第二次挥手:服务端收到连接释放报文段后即发出确认报文段 A C K = 1 , s e q = q , s e q = p + 1 ACK=1,seq=q,seq=p+1 ACK=1seq=qseq=p+1;客户端收到服务端的确认后,此时服务端还有未发送完毕的数据,客户端需等待服务端发送完毕;
  • 第三次挥手:服务端发送完数据,发出连接释放报文段 F I N = 1 , A C K = 1 , s e q = r , a c k = p + 1 FIN=1,ACK=1,seq=r,ack=p+1 FIN=1ACK=1seq=rack=p+1;
  • 第四次挥手:客户端收到服务端的连接释放报文段后,对此发出确认报文段 A C K = 1 , s e q = p + 1 , a c k = r + 1 ACK=1,seq=p+1,ack=r+1 ACK=1seq=p+1ack=r+1

2. TCP有哪些特点?

  1. TCP是面向连接的传输层协议。
  2. 点对点,每一条TCP连接只能有两个端点。
  3. TCP提供可靠交付的服务。
  4. TCP提供全双工通信。
  5. 面向字节流。

3. TCP和UDP的区别

  1. TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接。
  2. TCP提供可靠的服务;UDP不保证可靠交付。
  3. TCP面向字节流,把数据看成一连串无结构的字节流;UDP是面向报文的。
  4. TCP有拥塞控制;UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如实时视频会议等)。
  5. 每一条TCP连接只能是点到点的;UDP支持一对一、一对多、多对一和多对多的通信方式。
    TCP首部开销20字节;UDP的首部开销小,只有8个字节。

4. TCP 和 UDP 分别对应的常见应用层协议

基于TCP的应用层协议有:HTTP、FTP、SMTP、TELNET、SSH

  • HTTP:HyperText Transfer Protocol(超文本传输协议),默认端口80
  • FTP: File Transfer Protocol (文件传输协议), 默认端口(20用于传输数据,21用于传输控制信息)
  • SMTP: Simple Mail Transfer Protocol (简单邮件传输协议) ,默认端口25
  • TELNET: Teletype over the Network (网络电传), 默认端口23
  • SSH:Secure Shell(安全外壳协议),默认端口 22

基于UDP的应用层协议:DNS、TFTP、SNMP

  • DNS : Domain Name Service (域名服务),默认端口 53
  • TFTP: Trivial File Transfer Protocol (简单文件传输协议),默认端口69

5. TCP的粘包和拆包

TCP是面向流,没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。
要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包;接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包;要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包;

解决方案:

  • 发送端将每个数据包封装为固定长度
  • 在数据尾部增加特殊字符进行分割
  • 将数据分为两部分,一部分是头部,一部分是内容体;其中头部结构大小固定,且有一个字段声明内容体的大小。

6. 说说TCP是如何确保可靠性的呢?

  • TCP的连接是基于三次握手,而断开则是基于四次挥手。确保连接和断开的可靠性。
  • TCP会记录哪些数据发送了,哪些数据被接收了,哪些没有被接受,并且保证数据包按序到达,保证数据传输不出差错。
  • 它有数据包校验、ACK应答、超时重传(发送方)、失序数据重传(接收方)、丢弃重复数据、流量控制(滑动窗口)和拥塞控制等机制。

7. TCP的滑动窗口机制和拥塞控制

详情见我另一篇文章:https://blog.csdn.net/qq_37117595/article/details/125976912

后续内容还会继续补充…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/30471.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【高频面试题】微服务篇

文章目录 Spring Cloud1.Spring Cloud 5大组件有哪些?2.服务注册和发现是什么意思?Spring Cloud 如何实现服务注册发现?3.负载均衡如何实现的 ?4.什么是服务雪崩,怎么解决这个问题?5.微服务是怎么监控的 业务相关6.项…

python - 爬虫简介

什么是爬虫? 模拟浏览器对网站服务器发送请求解析服务器返回的响应数据,并保存数据 爬虫能获取哪些数据? 原则上所有可以通过浏览器获取的数据都可以爬取爬虫也只能获取爬取浏览器可以正常获取的数据 爬虫的应用场景? 数据分…

SQL - limit

介绍: limit 是限制的意思, 用于限制返回的查询结果的行数(可以通过limit指定查询多少行数据). MySQL支持limit语法, 用来完成分页. 用法: select 字段1, 字段2, ... from table_name limit offset, length;参数说明: offset: 起始行数, 从0开始计数, 如果省略, 则默认为…

Nginx安装以及LVS-DR集群搭建

Nginx安装 1.环境准备 yum insatall -y make gcc gcc-c pcre-devel #pcre-devel -- pcre库 #安装openssl-devel yum install -y openssl-devel 2.tar安装包 3.解压软件包并创建软连接 tar -xf nginx-1.22.0.tar.gz -C /usr/local/ ln -s /usr/local/nginx-1.22.0/ /usr/local…

数组对象去重的几种方法

场景: let arrObj [{ name: "小红", id: 1 },{ name: "小橙", id: 1 },{ name: "小黄", id: 4 },{ name: "小绿", id: 3 },{ name: "小青", id: 1 },{ name: "小蓝", id: 4 } ]; 方法一:…

【PyTorch】nn.Conv2d函数详解

nn.Conv2d 是 PyTorch 中的一个卷积层,用于实现二维卷积操作 torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue, padding_modezeros, deviceNone, dtypeNone )参数解释 in_channels:输入的通…

【React学习】—函数式组件(四)

【React学习】—函数式组件&#xff08;四&#xff09; <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><ti…

在Python和C++中使用Bowyer-Watson算法的简单Delaunay三角剖分库

引言 Delaunay三角剖分是一种常用的计算几何算法&#xff0c;它在许多领域都有广泛的应用&#xff0c;包括计算机图形学、地理信息系统&#xff08;GIS&#xff09;、数值模拟等。在这篇文章中&#xff0c;我们将介绍如何在Python和C中使用Bowyer-Watson算法实现一个简单的Del…

HECI-Securtiy 防火墙路由技术

目录 一、防火墙路由基本原理 1.路由分类 2.路由优先级 3.路由查询先后顺序 4.静态路由基本原理 &#xff08;1&#xff09;指定出接口场景 &#xff08;2&#xff09;指定下一跳地址场景 5.静态路由与多出口 &#xff08;1&#xff09;主备备份 &#xff08;2&#…

robotframework+selenium 进行webui页面自动化测试

robotframework其实就是一个自动化的框架&#xff0c;想要进行什么样的自动化测试&#xff0c;就需要在这框架上添加相应的库文件&#xff0c;而用于webui页面自动化测试的就是selenium库. 关于robotframework框架的搭建我这里就不说了&#xff0c;今天就给大家根据一个登录的实…

OBS视频视频人物实时扣图方法(四种方式)

图片擦除一些杂乱图像 参考&#xff1a;https://www.bilibili.com/video/BV1va411G7be https://github.com/Sanster/lama-cleaner第一种&#xff1a;色度键选项 第二种&#xff1a;浏览器建立窗口选项 参考视频&#xff1a;https://www.bilibili.com/video/BV1WS4y1C7QY http…

【SpringBoot框架篇】33.优雅集成i18n实现国际化信息返回

文章目录 1.简介2.MessageSource配置和工具类封装2.1.配置MessageSource相关配置2.2.配置工具类2.3.测试返回国际级文本信息 3.不优雅的web调用示例(看看就行&#xff0c;别用)4.优雅使用示例4.1.错误响应消息枚举类4.2.ThreadLocal工具类配置4.2.1.ThreadLocal工具类数据封装4…

Nginx location匹配规则详解

Nginx location匹配规则详解 在Nginx配置location块时,不同的匹配规则会影响location的匹配优先级。本文将详细解释Nginx location的匹配规则。 location匹配规则 Nginx的location匹配按照以下优先级顺序进行: 1. 精确匹配 格式为location / { },必须完全匹配路径才会生…

一孩半政策

一&#xff09; 一孩半&#xff0c;又称独女户二胎&#xff0c;即中国大陆部分农村的一项计划生育政策&#xff0c;第一胎是女孩的夫妻可生育第二个子女。试问这个政策会不会影响男女平衡。 二&#xff09;如果生女孩一直生&#xff0c;直到生男孩停止&#xff0c;试问会不会…

(四)Node.js - npm与包

1. 什么是包 Node.js中的第三方模块又叫做包。 不同于Node.js中的内置模块与自定义模块&#xff0c;包是由第三方个人或团队开发出来的&#xff0c;免费供所有人使用。 由于Node.js的内置模块进提供了一些底层的API&#xff0c;导致在基于内置模块进行项目开发时&#xff0c…

USB(二):Type-C

一、引脚定义 Type-C口有 4对TX/RX差分线&#xff0c;2对USB D/D-&#xff0c;1对SBU&#xff0c;2个CC&#xff0c;4个VBUS和4个地线Type-C母座视图&#xff1a; Type-C公头视图&#xff1a; 二、关键名词 DFP(Downstream Facing Port)&#xff1a; 下行端口&#xff0c…

代码随想录第三十三天

代码随想录第三十三天 Leetcode 122. 买卖股票的最佳时机 IILeetcode 55. 跳跃游戏Leetcode 45. 跳跃游戏 II Leetcode 122. 买卖股票的最佳时机 II 题目链接: 买卖股票的最佳时机 II 自己的思路:根本想不到&#xff01;&#xff01;&#xff01; 正确思路:遇到相邻两天的正利…

Direct path read LOB

Table full scan &#xff1a; wait event Direct path read because of LOB "Direct path read" Wait Event During LOB Access (Doc ID 2287482.1)​编辑To Bottom In this Document Symptoms Changes Cause Solution References APPLIES TO: Oracle Database …

QT读写配置文件

文章目录 一、概述二、使用步骤1.引入头文件2.头文件的public中定义配置文件对象3.初始化 一、概述 Qt中常见的配置文件为&#xff08;.ini&#xff09;文件&#xff0c;其中ini是Initialization File的缩写&#xff0c;即初始化文件。 配置文件的格式如下所示&#xff1a; 模…

win11虚拟机安装

win11虚拟机安装 下载虚拟机客户端安装客户端创建虚拟机下载 ISO切换root账号GNOME桌面 下载虚拟机客户端 版本是16.2.3 链接&#xff1a;https://pan.baidu.com/s/13c6XVWFbeQKbCnrlfxD8cA 提取码&#xff1a;qxdc 安装客户端 安装向导 点击下一步 接收条款&#xff0c;点…