TCP协议中常见的问题

news2024/10/4 12:23:49

文章目录

  • 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.coloradmin.cn/o/1033238.html

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

相关文章

报错处理:Error: Redis server is running but Redis CLI cannot connect

嗨,读者朋友们!今天我来跟大家分享一个我在运维过程中遇到的一个关于Linux上运行Redis服务时的报错及解决方法。 报错信息如下: Error: Redis server is running but Redis CLI cannot connect 这个报错信息表明Redis服务器已经运行&#xff…

stm32之GPIO库函数点灯分析

stm32官方为了方便开发者,利用CubeMX 生成HAL库有关的C代码。HAL库就是硬件抽象层(hardware abstraction layer),生成一系列的函数帮助我们快速生成工程,脱离复杂的寄存器配置。stm32相对于51来功能强大,但是寄存器的数量也不是一…

动手吧,vue数字动画

数字动画&#xff0c;有数字的地方都能用上&#xff0c;拿去吧&#xff01; 效果&#xff1a; 1、template部分 <template><div class"v-count-up">{{ dispVlaue }}</div> </template> 2、js部分 export default {data() {return {timer…

版本动态 | SolidUI 0.3.0 版本发布

文章目录 背景发版清单功能部署 示例html生成模型选择数据源 详细指引贡献者如何成为贡献者 背景 随着文本生成图像的语言模型兴起&#xff0c;SolidUI想帮人们快速构建可视化工具&#xff0c;可视化内容包括2D,3D,3D场景&#xff0c;从而快速构三维数据演示场景。SolidUI 是一…

摄像头工程师说 Camera - 数据格式 RAW、RGB(1)

Camera - 数据格式 RAW、RGB Camera 数据格式-RAW、RGB从摄像头工作的基本原理说起回归本质-图像色彩的几种表示方法RGB 三原色RAW RGB 格式诞生RAW8 VS RAW10真彩色-RGB888、BGR888 格式的引入数据量小点的 RGB 格式-RGB565、RGB555用位数表示的 RGB 格式RGB24&#xff1a;RGB…

iOS17.0.2更新修复iPhone 15系列机型数据迁移问题,附新机快速数据迁移办法!

iPhone 15 系列机型已于今日正式发售&#xff0c;为解决iPhone15这些机型出现的数据迁移问题&#xff0c;苹果紧急发布了 iOS 17.0.2 更新&#xff0c;内部版本号为 21A350。 需要注意的是&#xff0c; iOS 17.0.2 更新仅适用于 iPhone 15、iPhone 15 Plus、iPhone 15 Pro 和 …

HTML5福利篇--使用Canvas画图

目录 一.Canvas元素 1.Canvas元素定义 2.使用JavaScript获取页面中的Canvas对象 二.绘制图形 1.绘制直线 2.绘制矩形 &#xff08;1&#xff09;rect() &#xff08;2&#xff09;strokeRect() &#xff08;3&#xff09;fillRect()和clearRect()函数 3.绘制圆弧 4.…

华为云云耀云服务器L实例评测 | 基于minikube搭建单节点kubernetes集群

目录 1 安装Docker2 conntrack-tools3 安装minikube4 下载二进制&#xff1a;kubeadm、kubectl、kubelet5 准备镜像6 启动minikube7 简单测试 ​ Minikube 是一个使用golang开发的单节点kubernetes集群环境&#xff0c;在资源紧张的情况下&#xff0c;可以用于快速搭建kubernet…

项目进展(一)-晶振正常输出、焊接驱动芯片、查找芯片手册并学习

今天的主要工作集中在博士师兄的项目上&#xff0c;效率偏低&#xff0c;主要是一中午的时间都卡在晶振上。在焊接完芯片和晶振之后&#xff0c;测试晶振输出引脚无输出&#xff0c;所以就开始找各种博客&#xff0c;寻找晶振不起振的原因&#xff0c;在下面两篇文章中找到了答…

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

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

JavaScript+canvas实现粒子动画效果

1.HTML部分 <!DOCTYPE html> <html lang"zh"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>粒子效果</title><style&g…

OpenAI官方吴达恩《ChatGPT Prompt Engineering 提示词工程师》(7)聊天机器人 / ChatBot

聊天机器人 / ChatBot 使用大型语言模型来构建你的自定义聊天机器人 在本视频中&#xff0c;你将学习使用OpenAI ChatCompletions格式的组件构建一个机器人。 环境准备 首先&#xff0c;我们将像往常一样设置OpenAI Python包。 import os import openai from dotenv import…

图像练习-答题卡opencv(02)

原图 结果 代码 // Load source imagecv::Mat src cv::imread("answer_card.jpg", cv::IMREAD_COLOR);if (src.empty()){return;}cv::Mat gray;cv::cvtColor(src, gray, cv::COLOR_BGR2GRAY);cv::Mat binary;double value cv::threshold(gray, binary, 0, 255, …

用PHP实现极验验证功能

极验验证是一种防机器人的验证机制&#xff0c;可以通过图像识别等方式来判断用户是否为真实用户。在实现极验验证功能时&#xff0c;您需要进行以下步骤&#xff1a; 1 注册极验账号&#xff1a; 首先&#xff0c;您需要在极验官网注册账号并创建一个应用&#xff0c;获取相应…

x_ctf_b0verfl0w

x_ctf_b0verfl0w Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX disabled PIE: No PIE (0x8048000) RWX: Has RWX segments32位&#xff0c;保护全关&#xff0c;写shellcode int vul() {char s[32]; // [esp18h] [eb…

mac安装 scala 详细教程(包含在 idea 上使用,以及scala插件安装)

目录 一 下载解压 二 配置环境变量 三 测试 scala 四 idea 编写 scala 文件 1. 安装插件 scala 插件 2. 使用 idea 创建 scala 工程 3. 使用idea 创建 maven 工程开发 scala 一 下载解压 去官网选择合适的版本下载 官网地址https://www.scala-lang.org/download/all.…

RocketMQ高性能核心原理与源码架构剖析

文章目录 1、源码环境搭建1.1、主要功能模块1.2、源码启动服务1.2.1、 启动nameServer1.2.2、 启动Broker1.2.3、 发送消息1.2.4、 消费消息 2、源码剖析2.1、NameServer的启动过程2.2、Broker服务启动过程2.3、Netty服务注册框架2.3.1、关注重点2.3.2、源码重点 1、源码环境搭…

进化的京东云DaaS:向大模型要解

通过新的DaaS大模型模式&#xff0c;京东云想要为企业提供的增长路径&#xff0c;恰是从最原始的“要数据”真正进阶到最终的“出效果”&#xff0c;将大模型和京东对增长的理解封装到整个产品矩阵中&#xff0c;帮助企业构建最适合AI时代的增长底盘。 作者|皮爷 出品|产业…

如何保障汽车嵌入式软件的质量与安全?您需要了解ASPICE标准

汽车软件开发流程改进与能力确定&#xff08;Automotive SPICE或ASPICE&#xff09;是一个流程评估模型&#xff0c;它帮助汽车原始设备制造商&#xff08;OEM&#xff09;和供应商评估当前企业软件开发流程的性能和成熟度水平。 遵守这一标准&#xff0c;有助于汽车供应商确保…

Apache Flume

Flume 1.9.0 Developer Guide【Flume 1.9.0开发人员指南】 Introduction【介绍】 摘自&#xff1a;Flume 1.9.0 Developer Guide — Apache Flume Overview【概述】 Apache Flume is a distributed, reliable, and available system for efficiently collecting, aggregati…