TCP协议中常见的问题

文章目录

  • TCP协议中常见的问题
      • 谈一谈对OSI七层模型和TCP/IP四层模型的理解?
      • 谈谈TCP协议的3次握手过程?
      • TCP协议为什么要3次握手?2次,4次不行吗?
      • 谈谈TCP协议的四次挥手过程?
      • 什么是流量控制?
      • 什么是滑动窗口?
      • TCP和UDP有什么区别?

TCP协议中常见的问题

谈一谈对OSI七层模型和TCP/IP四层模型的理解?

  • 将计算机网络分为七层,是为了增强他的通用性和兼容性,每一层都会遵守响应的规则
  • 计算机网络被分为应用层、表示层、会话层、传输层、网络层、数据链路层、物理层
  • 而TCP/IP 四层模型则是OSI七层模型的简化
    • 将OSI中的应用层、表示层、会话层整体归结为应用层
    • 将OSI中数据链路层和物理层整体归结为数据链路层
    • 所以TCP/IP四层模型包括 应用层、传输层、网络层、数据链路层四层

总结下来,物理层就是将电脑通过物理手段连接起来,数据链路层就是将比特流所表示的数据进行分组、网络层就是建立主机和主机之间的连接、传输层就是端口到端口的连接、应用层最终负责建立连接,将一些数据呈现给用户

谈谈TCP协议的3次握手过程?

  • 3次握手的过程也就是客户和服务器建立连接的过程
  • 第一次握手
    • 客户端向服务器发送一个数据包
    • 数据包的首部包含 同步SYN=1,确认ACK=0,序号seq=x
    • SYN=1,ACK=0,表示这是一个请求报文段,seq表示所传送数据的第一个字节的序号
  • 第二次握手
    • 服务器接收到客户端发来的数据包,根据这个数据包的首部**SYN=1,ACK=0,**判断出这是一个请求连接的数据包
    • 如果服务器同意连接,则会返回一个数据包,这个数据包的首部就是SYN=1ACK=1,seq=y,ack=x+1
    • SYN=1,ACK=1,表示服务器同意此次连接,ack=x+1表示服务器已经收到发来的x个数据,并告诉客户端下次从第x+1个字节开始传输
  • 第三次握手
    • 客户端收到服务的确认连接之后,会再次向服务器发送一个数据包
    • 数据包中包含 同步SYN=0确认ACK=1序号seq=x+1,ack=y+1
    • 同步SYN=0表示服务器和客户端都同意连接,确认ACK=1表示收到服务发来的数据包,序号seq=x+1表示发来的数据就是第x+1个,ack=y+1告诉服务器下次从y+1个字节开始发送

三次握手结束

TCP协议为什么要3次握手?2次,4次不行吗?

  • 因为三次握手的前两次都是确认连接,第三次才是真正的连接,如果是两次,则不能正常连接,四次则会浪费资源

谈谈TCP协议的四次挥手过程?

四次挥手其实就是释放连接的过程

  • 第一次挥手
    • 客户端向服务器发送一个请求释放连接的数据包,数据包的首部包含 终止FIN=1(表示客户端要主动释放连接),ACk=0
  • 第二次挥手
    • 服务器收到请求释放连接的数据包,会给客户端发送确认数据包,此时客户端到服务器的连接就释放了,但是服务器依然可以给客户端发送未发送完的数据,但客户端无法再向服务器发送数据
    • 第二次挥手服务器给客户端发送的数据包的首部包含 终止FIN=0,ACK=1,序号为seq,确认号ack
    • 终止FIN=0,ACK=1,表示同意客户端释放连接,但连接还没有释放
  • 第三次挥手
    • 此时服务器不再向客户端发送数据,会再向客户端发送确认报文
    • 这次报文的首部包含 终止FIN=1,ACK=1
  • 第四次挥手
    • 客户端收到服务器的报文,最后向服务器发出确认报文,连接彻底释放
    • 此次报文的首部包含ACK=1,FIN=0

什么是流量控制?

  • 流量控制其实就是控制数据的发送速率,保证接收方来得及接收

  • TCP实现流量控制是通过滑动窗口实现的,接收方可以控制滑动窗口的大小,从而控制数据发送的速率

什么是滑动窗口?

  • 滑动窗口就是TCP实现流量控制的一种机制
  • 发送方和接收方都有各自的缓冲区域,这个缓冲区域就是滑动窗口,发送方的窗口大小由接收方的TCP首部的窗口字段决定
  • 发送方将窗口分为:已发送并确认已发送未确认未发送未超出接收方窗口范围未发送但超出接收方窗口范围,随着接收方的确定,发送方的窗口会不断向前移动

4b90f603738da977bb9bce06f00830108718e3ce.webp

  • 接收方将窗口分为,接收并确认未接收但可以接收,接收方通过改变窗口大小,可以控制发送方的发送速率,从而实现流量控制

b21c8701a18b87d6074f73284751e0311f30fd5f.webp

TCP和UDP有什么区别?

是否面向连接传输可靠性传输效率所需资源
TCP面向连接可靠性传输
UDP无连接不可靠传输
  • TCP 是可靠性传输,面向连接的协议,传输效率慢,所需资源多
  • UDP 是不可靠传输,无连接的协议,传输效率高,所需资源少

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

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

相关文章

软考软件设计师-存储管理-文件管理-计算机网络(中

文章目录 一、存储管理页面置换算法 (最佳OPT)存储页面-先进先出置换算法(FIFO)最久未使用算法(最近最久未使用LRU) 二、文件管理初识文件管理文件目录-绝对路径文件管理-文件的结构文件管理-索引的分配 空闲存储空间的管理(位示图法)三、计算…

精品Python数字藏品购物商城爬虫-可视化大屏

《[含文档PPT源码等]精品基于Python实现的数字藏品爬虫》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程等 软件开发环境及开发工具: 开发语言:python 使用框架:Django 前端技术:JavaScript、VUE.js&a…

视频编解码器H.264和H265有什么区别?

对于大型视频文件来说,视频编解码器至关重要,它可以将文件压缩为较小的尺寸,从而可以更轻松地存储和加快传输速度。而两种最常用的编解码器是H.264和H.265,那么它们两者之间有什么区别,哪一个更好呢? 1. 什…

【Linux网络编程】gdb调试技巧

这篇博客主要要记录一下自己在Linux操作系统Ubuntu下使用gbd调试程序的一些指令,以及使用过程中的一些心得。 使用方法 可以使用如下代码 gcc -g test.c -o test 或者 gcc test.c -o test ​ -g的选项最好添加,如果不添加,l指令无法被识别 …

zabbix学习3--zabbix6.x-proxy

文章目录 proxy proxy # 安装mysql 8.0# 获取源码包【https://www.zabbix.com/cn/download_sources】 mkdir -p /data/zabbix_proxy/{data,install,logs,php} mkdir -p /var/run/zabbix_proxy tar xf zabbix-6.4.3.tar.gz -C /data/zabbix_proxy/install/ cd /data/zabbix_pro…

iOS应用程序数据保护:如何保护iOS应用程序中的图片、资源和敏感数据

目录 转载:怎么保护苹果手机移动应用程序ipa中文件安全? 前言 1. 对敏感文件进行文件名称混淆 2. 更改文件的MD5值 3. 增加不可见水印处理 3. 对html,js,css等资源进行压缩 5. 删除可执行文件中的调试信息…

基于骨架的动作识别:SkeleTR: Towrads Skeleton-based Action Recognition in the Wild

论文作者:Haodong Duan,Mingze Xu,Bing Shuai,Davide Modolo,Zhuowen Tu,Joseph Tighe,Alessandro Bergamo 作者单位:The Chinese University of Hong Kong; AWS AI Labs. 论文链接:http://arxiv.org/abs/2309.11445v1 内容简介&#xff1…

leetcode刷题笔记——位运算

C/C语言中逻辑右移和算数右移共享同一个运算符>> 如果运算数类型是unsigned则采用逻辑右移,而signed则采用算数右移。对于signed类型的数据,如果需要使用算数右移,或者unsigned类型的数据需要使用逻辑右移,都需要进行类型转…

《从菜鸟到大师之路 ElasticSearch 篇》

《从菜鸟到大师之路 ElasticSearch 篇》 (一):ElasticSearch 基础概念、生态和应用场景 为什么需要学习 ElasticSearch 根据 DB Engine 的排名显示, ElasticSearch 是最受欢迎的 企业级搜索引擎 。下图红色勾选的是我们前面的系…

数据结构与算法(六)--链表的遍历,查询和修改,删除操作

一、前言 上篇文章我们了解了链表的概念以及链表底层的搭建以及向链表中添加元素的操作。本次我们继续学习链表剩余的操作:遍历,查询和修改、删除操作。 二、链表查询以及遍历 ①获得链表的第index(0-based)个位置的元素(不常用&#xff0…

Java多线程篇(4)——wait/notify和park/unPark

文章目录 Object - wait/notifyobject.wait()object.notify() LockSupport - park/unparkLockSupport.park()LockSupport.unPark() Object - wait/notify object.wait() ObjectSynchronizer::wait 从这段代码可以得到两个信息 1:wait() 底层是对象锁(就…

《C++ primer》练习6.36-6.38:书写返回数组引用的函数声明

最近看C primer,看到《C primer》6.3.3练习,要求书写返回数组引用的函数声明,觉得有必要实践记录一下。 这里先总结返回数组的引用的的函数声明写法(下面的Type是数组元素的类型,可以是int、float等,如果要…

ICCV 2023 | MPI-Flow:从单视角构建的多平面图像中学习光流

ICCV 2023 | MPI-Flow:从单视角构建的多平面图像中学习光流 引言:主要贡献:Motivation:算法细节:Optical Flow Data GenerationIndependent Object MotionsDepth-Aware Inpainting 实验结果: 来源&#xff…

2023年前端流行什么技术和框架了?

Web前端三大主流框架有React、Vue.js和Angular,由于接触过Vue.js,接下来主讲最新的Vue3.0! Vue3.0作为最新版本的Vue.js框架,拥有更强大的性能和更丰富的功能,为低代码开发平台注入了全新的活力。而JNPF快速开发平台作…

Linux新手教程||Linux vi/vim

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。 但是目前我们使用比较多的是 vim 编辑器。 vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。 什么是 vim? Vim是…

Chrome浏览器删除网站cookies的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

3.wifi开发,网络编程

网络协议栈LwIP WiFi UDP Clinet编程 WiFi UDP Server编程 WiFi TCP Client编程 WiFi TCP Server编程 一。LWIP原理介绍,API介绍,文件结构 1.Lwip支持的协议 2.API 3.文件结构 1.api目录:应用程序接口文件。 2.arch目录:与硬件和…

登录业务实现

登录业务实现: 登录成功/失败实现 -> pinia管理用户数据及数据持久化 -> 不同登录状态的模板适配 -> 请求拦截器携带token -> 退出登录实现 -> token失效(401响应拦截) 1. 登录成功/失败实现 当表单校验通过时&a…

iOS线上闪退问题解决方案

iOS线上闪退问题的收集工具是关键,它们可以帮助你及时发现和解决应用程序中的崩溃问题。以下是一些常用的iOS线上闪退问题收集工具及其使用方法,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合…

一招解除csdn复制限制

先看这个代码 python读取英文pdf翻译成中文pdf文件导出代码 想要复制代码,csdn有限制怎么办(csdn流氓,无耻) 解除方法 ctrlu 看效果