首页 > 其他分享 >TCP/TP协议栈(逐渐更新版)

TCP/TP协议栈(逐渐更新版)

时间:2024-08-01 22:30:21浏览次数:13  
标签:协议 收到 TCP 更新版 发送 TP 基地 我们

TCP/IP协议栈

应用层

DNS协议

传输层

TCP协议

TCP协议报文结构

  • 源端口
  • 目的端口
  • 序列号
  • 确认号
  • 头长度header length or data offset
  • 保留字段reserved
  • 状态字段
    • URG
    • ACK
    • PSH
    • RST
    • SYN
    • FIN
  • 窗口字段
  • 校验和
  • 紧急指针
  • 可选字段
  • 数据

TCP协议三次握手

TCP三次握手是一个老生常谈的问题。为了方便理解,我们首先来模拟A基地和B基地通信的问题,核心的问题是A基地和B基地如何确认双方的发送和接收能力。

首先,我们要去掉上帝视角、沉浸进去扮演一个角色。我们是A基地,现在我们想和B基地建立通信,首先我们给B基地发一个“hello”,等待B基地的回复。这时候B基地在收到我们的信息之后,回发一个“我收到了你的信息”。我们A基地收到B基地的回复“我收到了你的信息”之后,我们就能知道B基地的接收和发送能力都没有问题。但是站在B基地的视角,B基地不知道我们是否收到这条回发消息,所以此时B基地出于安全考虑就不会发消息,因为他们无法确定我们A基地是否有接收能力,B基地只能够知道A基地有发送能力。所以需要我们再发一次“我们收到了你的回复”信息给B基地。B基地在收到我们的回发消息就能够确认我们A基地收到了回复,这样B基地就能够知道我们的接收能力也没有问题。此时才能够安全通信。所以我们总结一下,其实TCP三次握手就是为了确定两者都具有发送和接收的能力。所以发包总共三次,确认总共两次。

值得一提的是,TCP连接发起是由客户端发起的,并不能由服务端发起。

所以我们来分析一下上图的三次握手,

  1. 客户端发送SYN包,生成随机序列号seq = x
  2. 服务端发送SYN, ACK包,生成随机序列号seq = y,对上一次的确认ack = x + 1
  3. 客户端发送ACK包,生成上一次确认号ack = y + 1

TCP协议四次挥手

UDP协议

标签:协议,收到,TCP,更新版,发送,TP,基地,我们
From: https://www.cnblogs.com/solicit/p/18337709

相关文章

  • tpmtool 描述:     此实用程序可用于获取有关受信任的平台模块(TPM)的信息。    
     tpmtool|MicrosoftLearntpmtool描述:  此实用程序可用于获取有关受信任的平台模块(TPM)的信息。  有关最新文档,请转到https://aka.ms/tpmtool语法:  tpmtool[parameter][<参数>]参数:  GETDEVICEINFORMATION          显示......
  • TpmVscMgr.exe 命令行工具让具有管理凭据的用户能够在计算机上创建和删除 TPM 虚拟智
     tpmvscmgr|MicrosoftLearn tpmvscmgr命令行工具让具有管理凭据的用户能够在计算机上创建和删除TPM虚拟智能卡。 tpmvscmgrTpmVscMgr.exe 命令:    create        [/quiet]        /name<名称>       ......
  • Android开发 - (适配器)Adapter类中FragmentPagerAdapter实现类详细解析
    简介用于ViewPager,与Fragment一起使用,适合少量静态页面具体作用FragmentPagerAdapter专用于在ViewPager中管理和显示Fragment。它允许你在滑动视图(ViewPager)中实现分页功能,每个页面都是一个Fragment。FragmentPagerAdapter适用于需要管理少量Fragment的场景,因为......
  • ScottPlot使用笔记
    安装WPF:Install-PackageScottPlot.WPFAvalonia:Install-PackageScottPlot.Avalonia相关网站https://github.com/ScottPlot/ScottPlothttps://scottplot.net/调研情况ScottPlot调研情况:目前可以用ScottPlot来绘制基本的曲线图,柱形图,饼图,雷达图。ScottPlot最新的是5.X......
  • 小程序http封装
    constui=require('./ui');constBASE_URL='http://119.23.227.211:8011'/***网络请求request*obj.data请求接口需要传递的数据*obj.showLoading控制是否显示加载Loading默认为false不显示*obj.contentType默认为application/json*obj.method请求......
  • 为什么 DDoS 攻击偏爱使用 TCP 和 UDP 包?
    DistributedDenialofService(DDoS)攻击是指攻击者利用多个计算机系统或网络设备(通常是被恶意软件感染的计算机,被称为“僵尸网络”)来淹没目标服务器的资源,导致合法用户无法访问服务。TCP和UDP是两种最常见的用于DDoS攻击的网络协议。1.TCP和UDP的特性TCP(Tr......
  • 传输层TCP协议
    传输层TCP协议1.TCP协议简介2.TCP特点3.TCP协议段格式4.确认应答(ACK)机制和序列号5.捎带应答6.标志位7.连接管理机制7.1三次握手7.2四次挥手7.3服务端状态转化8.超时重传机制9.流量控制10.滑动窗口11.拥塞控制12.延迟应答13.面向字节流14.粘包问题1......
  • linux之FTP服务vsftpd和pure-ftpd常用配置
    vsftpdvsftpd介绍部分参考自vsftpd操作手册-完整版-HOsystem-博客园(cnblogs.com)vsftpd认证模式匿名开放模式:是最不安全的一种认证模式,任何人都可以无须密码验证而直接登录到FTP服务器。本地用户模式:是通过Linux系统本地的账户密码信息进行认证的模式,相较于匿名开......
  • Http发送Post请求 form-data 和 application/x-www-form-urlencoded 区别
    在HTTP协议中,使用POST请求时,可以通过不同的方式发送表单数据。form-data 和 application/x-www-form-urlencoded是两种常见的编码方式,它们在发送数据时有一些关键的区别:application/x-www-form-urlencoded编码方式:以键值对的形式进行编码,每个键值对之间用&符号连接,每个键和值......
  • 将 HTTP 分块编码数据流代码片段从 Node.js 转换为 Python
    我有一个Node.js客户端代码,它将请求发送到HTTP服务器,然后连续接收分块编码数据。这是带有一些流量数据输出的Node.js代码。consthttp=require('http');constoptions={hostname:'...',path:'...',port:...,...};constreq=http.request(......