TCP/IP协议栈

一、TCP/IP和OSI模型的比较

  • 相同点

两者都是以协议栈的概念为基础

协议栈中的协议彼此相互独立

下层对上层提供服务

  • 不同点

OSI是先有模型;TCP/IP是先有协议,后有模型

OSI是国际标准,适用于各种协议栈;TCP/IP实际标准,只适用于TCP/IP网络

 

二、 TCP报文段

  • 源端口号、目的端口号

 通过指定源端口和目标端口,就可以知道是哪两个进程需要通信。

0是不可以用的 代表位置端口

1-1024 超级管理员用

1024及以上 普通用户

知名的协议有端口号

服务端:端口号一般是固定的

客户端:端口号是随机生成的

端口号在一台机器上是唯一的,在不同机器是可以相同的。

  • 序列号

  • 确认号(ack)

    确认机制:确保A B双方都能收到数据的机制

  •  窗口大小

        表示现在允许对方发送的数据量,也就是告诉对方,从本报文段的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继续传送后面数据,由Window size value * Window size scaling factor(此值在三次握手阶段TCP选项Window scale协商得到)得出此值。

  • 首部长度

        表示TCP报文段的首部长度,共4位,由于TCP首部包含一个长度可变的选项部分,需要指定这个TCP报文段到底有多长。

  • 控制位

(1)SYN 同步位

        在建立连接时使用,用来同步序号。当SYN=1,ACK=0时,表示这是一个请求建立连接的报文段;当SYN=1,ACK=1时,表示对方同意建立连接。SYN=1,说明这是一个请求建立连接或同意建立连接的报文。

(2)ACK 确认位

        连接建立后,ACK必须为1,带ACK标志的TCP报文段称为确认报文段。

(3)FIN 结束位

         如果FIN=1,即告诉对方:“我的数据已经发送完毕,你可以断开连接了”。

(4)URG 紧急位

         表示本报文段中发送的数据是否包含紧急数据。

(5)PSH 急切位

        立即从TCP接收缓冲区中读走数据,为接收后续数据腾出空间。  

(6)RST 重置位

        如果收到一个RST=1的报文,说明与主机的连接出现了严重错误(如主机崩溃),必须释放连接,然后再重新建立连接。或者说明上次发送给主机的数据有问题,主机拒绝响应。 

三、三次握手

        tcp是面向连接的,就是说每次发送数据之前都要和对方建立一条可靠的连接,这个建立连接的过程分为3个步骤,就叫做三次握手。 

 

 PC1和PC2建立连接的过程:

PC1首先会把序号x 和同步位1的SYN报文给PC2,请求建立连接;

PC2收到PC1发来的建立连接请求后,会回复一个序号为y且确认号为x+1、同步位为1、确认位也为1的报文,表示同意和PC1建立连接;

PC1收到PC2同意连接的报文后,会再回复一个序号为x+1且确认号为y+1和确认位为1的报文给PC2。

此时PC1和PC2就完成了三次握手。

三次握手的目的是保证双方可以正常通信。

四、TCP四次挥手

(1)四次挥手过程

  • 第一次挥手:客户端发送一个带有FIN标志的数据包给服务端,表明它不再发送数据,但还可以接收数据。客户端进入FIN_WAIT_1状态。
  • 第二次挥手:服务端收到FIN包后,发送一个ACK确认包给客户端,表示已经收到了关闭连接的请求。服务端进入CLOSE_WAIT状态。
  • 第三次挥手:服务端完成数据发送后,发送一个FIN包给客户端,表示它也准备关闭连接。服务端进入LAST_ACK状态。
  • 第四次挥手:客户端收到服务端的FIN包后,发送一个ACK确认包给服务端,表示已经收到了关闭连接的请求。客户端进入TIME_WAIT状态。

        半关闭状态:发生在TCP连接的第三次挥手过程中。在客户端发送FIN报文后,服务端回复ACK报文,此时客户端进入FIN_WAIT_2状态,不再发送数据,但仍然能够接收服务端发送的数据,连接处于半关闭状态。

        客户端先发送一个FIN给服务端,自己进入FIN_WAIT_1状态,这时等待接收服务端报文,该报文会有两种可能:

  • 只有服务端的ACK

    ACK=1 收到关闭连接的请求,但还不能断开连接,进入半关闭状态。

  • 基于服务端的ACK,又有FIN

    ACK=1 FIN=1 真的断开。

(2)为什么需要四次挥手

  • 全双工通信:TCP连接是全双工的,意味着数据可以在两个方向上独立传输。因此,每个方向的关闭都需要单独的FIN和ACK交换。
  • 确保数据完整性:通过四次挥手,可以确保双方都确认了连接的关闭,从而避免数据丢失或不完整。

(3)2MSL

  • TIME_WAIT等待时间是2MSL的原因:等待2MSL的时间是为了确保在网络中的所有数据包都已过期并被丢弃,防止出现旧的数据包在网络中循环并导致连接错误关闭的问题。

 五、TCP超时重传

 (1)工作原理

  • 发送方发送数据包:发送方将数据分割成多个数据包,并为每个数据包分配一个序列号。然后,发送方会将数据包发送给接收方,并为每个数据包启动一个计时器。
  • 发送方启动计时器:发送方在发送数据包后会启动一个计时器,该计时器的值称为RTO(Retransmission Timeout),即重传超时时间。RTO的值通常会根据网络状况进行动态调整。
  • 接收方接收数据包:接收方收到数据包后会检查数据包的完整性,并对数据包进行排序。如果数据包完整且按序到达,接收方会发送确认报文给发送方。
  • 发送方收到确认报文:发送方收到确认报文后,会停止计时器。如果在RTO时间内没有收到确认报文,发送方会认为数据包丢失,并重新发送该数据包。

(2)意义 

        TCP超时重传机制确保了数据传输的完整性和可靠性,是TCP协议可靠性的重要保障。通过这一机制,TCP协议能够广泛应用于各种网络应用中,如文件传输、电子邮件、网页浏览等,成为构建可靠网络应用的基础。 

六、UDP协议

        UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输层协议,它不提供数据包的顺序保证或重传机制。

  • TCP和UDP的区别

        TCPUDP
连接类型面向连接无连接
传输速度
稳定性稳定不稳定
重传机制有重传报错机制没有重传机制

七、Telnet

        Telnet是一种基于TCP/IP协议的网络协议,主要用于远程登录和管理计算机。它允许用户通过命令行界面与远程计算机进行交互,是Internet远程登录服务的标准协议之一。

格式:   telnet         ip地址         端口

示例:   

telnet        192.168.91.100        22      

本机测试  远端服务器192.168.91.100的 22端口是否打开

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

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

相关文章

论文笔记:Pre-training to Match for Unified Low-shot Relation Extraction

论文来源:ACL 2022 论文地址:https://aclanthology.org/2022.acl-long.397.pdf 论文代码:https://github.com/fc-liu/MCMN (笔记不易,请勿恶意转载抄袭!!!) 目录 A…

外卖点餐系统小程序的设计

管理员账户功能包括:系统首页,个人中心,外卖员管理,餐厅管理,用户管理,菜品分类管理,菜品信息管理,外卖订单管理,订单配送管理 微信端账号功能包括:系统首页…

linux下编译鸿蒙版curl、openssl

一.环境准备 1.参考说明 NDK开发介绍:https://docs.openharmony.cn/pages/v5.0/zh-cn/application-dev/napi/ndk-development-overview.md 2.NDK下载 点击介绍页面中的链接可以跳转到相应下载页面: 下载相应版本: 下载完毕后解压到指定目…

.NET 通过C#设置Excel工作表的页面设置

Excel文件数据准备就绪并需要以报告形式呈现时,调整Excel文件的页面设置变得尤为重要,不仅关乎文档的专业外观,还直接影响到打印或电子分享时的可读性和实用性。通过C#来自动化这一过程,不仅可以节省大量手动配置的时间&#xff0…

python 画图|三维散点图输出

【1】引言 在前述学习进程中,已经初步掌握三维动画输出和散点图动画输出基本技能,可通过下述链接直达: python画图|散点图动态输出-CSDN博客 python动画教程|Animations using Matplotlib-官网教程程序解读_如何用python制作微动画-CSDN博…

Docker 教程四 (Docker 镜像加速)

Docker 镜像加速 国内从 DockerHub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。 目前国内 Docker 镜像源出现了一些问题,基本不能用了,后期能用我再更新下。* Docker 官方和国内很多云服务商都提供了国内加速器服务,例如…

STM32 SPI串行总线

目录 STM32的SPI通信原理 SPI串行总线概述 SPI串行总线互连方式 STM32F1 SPI串行总线的工作原理 SPI串行总线的特征 SPI串行总线的内部结构 SPI串行总线时钟信号的相位和极性 STM32的SPI接口配置 STM32的SPI接口数据发送与接收过程 SPI的HAL 驱动函数 STM32的SPI通信…

vue+ElementUI—实现基础后台管理布局(sideBar+header+appMain)(附源码)

后台管理的模板很多,vue本身就提供了完整的vue-template-admin,vue-admin-beautiful等后台管理系统化框架,但是这些框架正是因为成体系而显得繁重。假如你想搭建一个静态的后台管理模板页面和几个单独的菜单页面,直接就上框架是否…

STM32CubeIDE使用ADC采用DMA重大BUG

问题描述 STM32CubeIDE 1.8.0问题 大牛攻城狮最近调试STM32L151CBT6。由于项目上使用该款芯片做控制电源使用,其中涉及到多路ADC的数据采样。使用STM32CubeIDE 1.8.0版本详细如下图所示 注意这里的使用的软件版本号很关键。采用该款软件搭建工程,第一次…

物联网如何推动工业数字化转型?

全球步入数字经济时代,制造业的数字化转型已成为驱动经济发展的核心引擎。物联网作为工业数字化转型的强力推手,其深度融入不仅促进了生产流程的智能化与自动化,还实现了数据的实时分析与精准决策,为制造业企业带来了前所未有的创…

基于Langchain框架下Prompt工程调教大模型(LLM)[输入输出接口、提示词模板与例子选择器的协同应用

大家好,我是微学AI,今天给大家介绍一下基于Langchain框架下Prompt工程调教大模型(LLM)[输入输出接口、提示词模板与例子选择器的协同应用。本文深入探讨了Langchain框架下的Prompt工程在调教LLM(大语言模型)方面的应用&#xff0c…

高效微调理解(prompt-tuning,p-tuning v1,p-tuning v2,lora)

高效微调(prompt-tuning,p-tuning v1,p-tuning v2,lora) 1.prompt-tuning: 例子理解;保持原本模型参数不变,通过训练提示词的参数调整prompt,使其与下游任务匹配。 例子…

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz(动态新增、修改等操作)

SpringBoot教程(二十四) | SpringBoot实现分布式定时任务之Quartz(动态新增、修改等操作) 前言数据库脚本创建需要被调度的方法创建相关实体类创建业务层接口创建业务层实现类控制层类测试结果 前言 我这边的SpringBoot的版本为2…

用java来编写web界面

一、ssm框架整体目录架构 二、编写后端代码 1、编写实体层代码 实体层代码就是你的对象 entity package com.cv.entity;public class Apple {private Integer id;private String name;private Integer quantity;private Integer price;private Integer categoryId;public…

libaom 源码分析系列:noise_model.c 文件

libaom libaom 是 AOMedia(开放媒体联盟)开发的一个开源视频编解码器库,它是 AV1 视频压缩格式的参考实现,并被广泛用于多种生产系统中。libaom 支持多种功能,包括可扩展视频编码(SVC)、实时通信(RTC)优化等,并定期进行更新以提高压缩效率和编码速度 。 libaom 的一些…

2.1 HTML5 - Canvas标签

文章目录 引言Canvas标签概述定义实例:创建画布 理解Canvas坐标系概述实例:获取Canvas坐标 获取Canvas环境上下文概述实例:获取Canvas上下文设置渐变色效果 结语 引言 大家好,今天我们要一起探索HTML5中一个非常有趣且强大的特性…

Redhat的yum源出错——如何将yum源换成阿里云Centos源

文章目录 引言1. 查看和删除已安装的yum包2. 查看系统的版本号3. 镜像文件下载4. 镜像文件安装5. 下载和安装repo文件6. 配置repo文件7. 更新软件包缓存8. 验证9. 问题问题1 参考文献 Linux RedHat更换阿里云yum源 Redhat8.0 yum install问题解决 阿里云镜像 引言 为什么redha…

六西格玛黑带项目:TBX-02无人机飞行稳定性提升——张驰咨询

一、项目背景与问题定义 TBX-02是该公司最新发布的消费级无人机,面向摄影爱好者和户外探险者。产品上市后,通过客户反馈和实际测试数据发现,该无人机在复杂飞行环境中,如强风或快速移动时,存在明显的飞行抖动和稳定性…

【AIGC】OpenAI API在快速开发中的实践与应用:优化ChatGPT提示词Prompt加速工程

博客主页: [小ᶻZ࿆] 本文专栏: AIGC | ChatGPT 文章目录 💯前言💯使用最新型号确保最佳实践利用最新模型进行高效任务处理为什么要选择最新模型?结论 💯指令与上下文的分隔最佳实践分隔指令和上下文的重要性使用符…

一起体验AI动手实验,OceanBase 2024 年度发布会精彩预告

2024年OceanBase年度发布会将于10月23日在北京望京凯悦酒店举行。此次大会围绕“不止于记录”的主题,共同探讨当前数据库领域的前沿话题,包含主论坛、分论坛、AI 动手实训营、开源技术交流会等多个环节,诚邀全国各地的企业和开发者共同参与&a…