【TCP/IP协议详解】

【网络协议】TCP/IP 协议 1、TCP/IP 模型 TCP/IP 协议模型,包含了一系列构成互联网基础的网络协议,是 Internet 的核心协议。 基于 TCP/IP 协议栈可分为四层或五层,转换为 OSI 参考模型,可以分为七层,分别如下图所示: 通常我们所说的都是基于 TCP/TP 五层模型。 2、TCP/IP 协议栈每一层功能 应用层:HTTP、FTP 等等我们熟悉的协议。 传输层:TCP 和 UDP 协议、HTTPS。 网络层:IP 协议,它负责对数据加上 IP 地址和其他的数据以确定传输的目标。 数据链路层:为待传 阅读详情

一、TCP/IP协议简介

  TCP/IP传输协议,即传输控制/网络协议,也叫作网络通讯协议。它是在网络的使用中的最基本的通信协议。TCP/IP传输协议对互联网中各部分进行通信的标准和方法进行了规定。并且,TCP/IP传输协议是保证网络数据信息及时、完整传输的两个重要的协议。
  TCP/IP协议是Internet最基本的协议,其中应用层的主要协议有Telnet、FTP、SMTP等,是用来接收来自传输层的数据或者按不同应用要求与方式将数据传输至传输层;传输层的主要协议有TCP、UDP,是使用者使用平台和计算机信息网内部数据结合的通道,可以实现数据传输与数据共享;网络层的主要协议有ICMP、IP、IGMP,主要负责网络中数据包的传送等;而网络访问层,也叫网络接口层或数据链路层,主要协议有ARP、RARP,主要功能是提供链路管理错误检测、对不同通信媒介有关信息细节问题进行有效处理等。

二、OSI七层参考模型

  OSI的参考模型共有7层,是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系。由低层至高层分别为:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
OSI七层参考模型

2.1 OSI七层参考模型与TCP/IP协议模型各层对应关系

OSI七层参考模型与TCP/IP协议模型各层对应关系

三、TCP报文结构

  下图为TCP首部结构定义,定义了TCP协议如何读取和解析数据。
TCP报文结构

3.1 TCP端口

  TCP的连接需要四个要素来确定唯一的连接:源IP + 源端口、目的IP + 目的端口, 因此TCP首部预留了两个16位作为端口号的存储,IP地址由上一层IP协议负责传递。源端口和目的端口各占16位,即两个字节,因此端口号的范围为216=65536(0 ~ 65535)。此外0 ~ 1023端口是系统保留的,1023 ~ 65535是用户使用的端口范围。

3.2 TCP的序号和确认号

  ① 序号(Sequence number,缩写seq,32位):用于标识数据包在数据流中的位置。发送数据包时数据比较大时则需要分片,序号则用来区分不同的分片并排序,确保了数据的顺序性。
  ② 确认号(Acknowledge number,缩写ack,32位):确认数据是否被收到,一般为收到的序号值 + 1。只有 ACK 标志为 1 时确认序号字段才有效。

3.3 数据偏移

  表示TCP报文首部长度, 即TCP报文段的数据起始处距离TCP报文段的起始处的长度。以4字节为单位,占4位,取值范围为0~15。由此可计算出TCP首部的最大字节数为 4 * 15 = 60。TCP首部长度 - 20(固定首部长度) = 选项长度。

如果数据偏移值为5,则整个TCP报文头的长度是4 * 5 = 20字节,相当于TCP首部不包含选项。
如果数据偏移值为15,则整个TCP报文头的长度是4 * 5 = 60字节,相当于TCP首部中选项占40字节。

3.4 保留位

  占6位,默认为0。

3.5 TCP控制位

  URG:紧急标志位,表示数据包的紧急指针生效,数据具有高优先级,优先传送,而不按照原先的队列顺序传送,督促中间设备尽快处理;
  ACK:确认标志位,对已接收的数据包进行确认;
  PSH:推送标志位,表示该数据包被对方接收后应立即交给上层应用,而不在缓冲区排队;
  RST:重置标志位,用于连接复位、拒绝错误和非法的数据包;
  SYN:同步标志位,用于建立会话连接,同步序列号;
  FIN:完成标志位,表示数据传输已经完成,即将关闭连接;

3.6 窗口

  表示该报文的发送方能接受的字节数,即窗口大小,传输过程中双方可以动态调整窗口大小,即用来控制数据传输速率。一个TCP数据包大小,最大则为65535(216 - 1)字节,除去头部20字节,理论上可携带的最大数据量为65515字节。

3.7 检验和

  用于验证数据完整性,确保数据未被修改。检验和覆盖了整个 TCP 报文段,包括 TCP 首部和 TCP 数据,发送端根据特定算法对整个报文段计算出一个检验和,接收端会进行计算并验证。

3.8 紧急指针

  只在URG标志位置1的时候有效。表示紧急数据在TCP数据中的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。

3.9 选项

  非必须,长度可变,最大长度为40字节。用于在TCP头部中传输一些额外的控制信息。

3.10 填充

  非必须,填充字段,用来补位,使整个首部长度是4字节的整数倍。

四、TCP/IP协议的三次握手与四次挥手

4.1 TCP/IP协议的三次握手

TCP/IP协议的三次握手

名称数据发送方向SYN(建立连接)seq(自己的数据)ACK(收到的请求)ack(接收到的对方的数据)
第一次握手客户端 --> 服务端1x--
第二次握手服务端 --> 客户端1y1x + 1
第三次握手客户端 --> 服务端-x + 11y + 1

4.2 TCP/IP协议的四次挥手

TCP/IP协议的四次挥手

名称数据发送方向FIN(断开连接)seq(自己的数据)ACK(收到的请求)ack(接收到的对方的数据)
ack = seq + 1
第一次挥手客户端 --> 服务端1u--
第二次挥手
(期间仍存在数据传输)
服务端 --> 客户端-v1u + 1
第三次挥手服务端 --> 客户端1w1u + 1
第四次挥手客户端 --> 服务端-u + 11w + 1

4.3 常见问题

  1. 为什么需要三次握手?

  ① 防止旧连接的混淆。 由于网络延迟等原因,可能会出现旧连接的数据包在新连接中被误认为是有效数据包的情况。
  ② 建立可靠连接。 三次握手才可以同步双方的初始序列号,序列号能够保证数据包不重复、不丢弃和按序传输。两次握手无法防止历史连接,也无法同步双方序列号。
  ③ 避免资源浪费。 三次握手可以防止未经授权的恶意连接,例如SYN洪泛攻击等。如果服务器收到的SYN包并没有相应的ACK包,那么服务器就不会认为这是一条有效的连接请求,从而防止恶意连接。

  2. 为什么四次挥手的第二次和第三次挥手不能合并?

  ① 第二次挥手的目的是服务端告诉客户端,我(服务端)已经收到你(客户端)发送的包了。
  ② 第三次挥手的目的是服务端告诉客户端,我(服务端)的数据也已经发送完毕了,不会再发送数据了。
  因此,第二次挥手主要是对第一次挥手的响应,第三次挥手主要是告知客户端,服务端已经不会再发送数据了。在第二次挥手和第三次挥手之间,服务端还是可以向客户端发送数据的, 因此第二次挥手和第三次挥手不能合并。

  3. 三次握手和四次挥手的目的是什么?

  ①三次握手的目的是保证双方都准备好了资源,双方的发送和接收能力都正常。
  ②四次挥手的目的是保证双方的资源都能正常释放掉。

  4. 服务端收到第四次挥手的数据包之前,会释放掉资源么?

  不会, 即使服务端调用了close(),仍然会保留资源,直到收到客户端的发来的第四次挥手的数据包为止。当然,如果服务端一直没有收到第四次挥手的数据包,服务端会认为是不是第三次挥手的数据包丢失了,不断重试第三次挥手,重试一定次数,仍然没有收到,服务端直接断开连接。

  5. 第三次挥手什么时候发?

  服务端调用close()之后才能发。

  6. TCP/IP协议在第四次挥手时为什么要等待2MSL(最长报文段寿命,Maximum Segment Lifetime)?

  ① 保证客户端发送的最后一个ACK报文段能够到达服务端。 因为该ACK有可能丢失,从而导致处在LAST-ACK状态的服务端收不到对FIN-ACK的确认报文。
  ② 防止"已失效的连接请求报文段"出现在本连接中。 客户端在发送完最后一个ACK报文段后,再经过2MSL,就可以使本连接持续的时间内所产生的所有报文段都从网络中消失,使下一个新的连接中不会出现滞留在网络中的报文段。

  7. 为什么客户端先调close(),而服务器不能先调?

  ① 先调用close()的一方需要等待2MSL之后才能释放资源,在这段时间期间时不允许用bind的方式去重新绑定端口的,这时就会出现端口被占用的情况。
  ② 客户端的端口是由操作系统随机分配的,被占用之后会再重新分配一个,而服务端先调close(),则需设定套接字选项,配置重复利用端口资源才可以。

【网络基础】TCP/IP协议详解 tcp/ip协议 阅读详情

相关推荐

TCP/IP 协议详解

TCP/IP 协议 一、TCP/IP 是什么? ​ TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)体系结构是指能够在多个不同网络间实现的协议簇。 ​ TCP/IP 是一种体系结构,也代表了一系列的协议簇,同时,TCP 和 IP 又分别是建立在传输层和网络层的协议。而传输层协议还包含常见的面向无连接的 UDP 协...

PitBXu的博客 2714

一文讲透TCP/IP协议 | 图解+秒懂+史上最全

TCP/IP协议包含了一系列的协议,也叫TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。TCP/IP协议族提供了点对点的连结机制,并且将传输数据帧的封装、寻址、传输、路由以及接收方式,都予以标准化。

青春木鱼的博客 14万+

TCP/IP协议详解

认识HTTP协议 它是互联网协议(Internet Protocol Suite),一个网络通信模型,是互联网的一个基本的构架。 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。 HTTP是一个基于TCP/IP通信协议来传递数据(HTML 文件, 图片文件...

🏆 前端领域优质创作者 39万+

计算机网络协议

目录   一、计算机网络的发展历程      1、计算机网络发展      2、计算机的模式变化  二、各种协议      1、协议的重要性      2、协议的标准:OSI七层模型  三、TCP/IP协议      1、介绍      2、TCP/IP协议的发展历程      3、TCP/IP四层模型  四、IP协议      1、介绍      2、IP协议特点      3、IPV4和I...

littlerain666 1385

TCP/IP协议族全面解析与详解

本文还有配套的精品资源,点击获取 简介:本书《TCP/IP详解.卷一:协议》提供了深入的TCP/IP协议族解析,专注于理论和原理,阐述了网络通信的核心概念。TCP/IP作为互联网基础,包含网络接口层、互联网层、传输层和应用层等协议,这些协议共同确保了不同设备间的全球通信。读者将学习到各层协议的工作机制、报文格式、拥塞控制等关键概念,从而对网络通信有更全面的理解,这有助于网络...

weixin_28922227的博客 987

TCP/IP核心协议详解及网络基础

本文还有配套的精品资源,点击获取 简介:《TCP/IP详解 卷1协议》是网络通信领域的经典教材,作者W. Richard Stevens深入解析了TCP/IP协议栈的四层架构及其核心协议。本书从基础概念到技术细节全面介绍TCP/IP工作原理,包括TCP和UDP协议的可靠性与连接管理,IP协议的路由与传输,以及子网、NAT、ICMP等网络基础知识。另外,书中还涉及端口、IP地...

weixin_36483050的博客 1110

【免费下载】 深入探索TCP/IP协议:《TCP/IP协议详解》全三卷中文PDF下载

深入探索TCP/IP协议:《TCP/IP协议详解》全三卷中文PDF下载 【下载地址】TCPIP协议详解全三卷下载 TCP/IP协议详解全三卷 下载 项目地址: https://gitcode.com/open-source-too...

gitblog_09816的博客 1068

Zemax序列模式下激光二极管(LD)光源建模与像散校正实战

本文详细讲解了在Zemax序列模式下精确建立激光二极管(LD)光源模型并校正其像散的核心方法。通过将椭圆光束的发散角转换为渐晕系数,并巧妙利用理想柱面镜模拟像散,实现了对LD光源特性的高精度模拟。该方法特别适用于激光耦合、激光雷达等需要对像散光束进行精密控制的光学系统设计。

weixin_28455801的博客 433

TCP/IP协议族分层详解

1、TCP/IP的介绍互联网协议族(Internet Protocol Suite,缩写IPS)是一个网络通信模型,以及一整个网络传输协议家族, 为互联网的基础通信架构。它常被通称为TCP/IP协议族(TCP/IP Protocol Suite,或TCP/IP Protocols), 简称TCP/IP。TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都

William 5万+

TSMC 65nm PDK衬底文件转换避坑记:从.itf到.itd,解决ADS导入乱码与金属层缺失

本文详细解析了TSMC 65nm PDK衬底文件从.itf到.itd转换过程中的常见问题及解决方案,包括ADS导入乱码与金属层缺失的修复方法。通过环境准备、文件定位、转换操作和问题诊断的完整流程,帮助工程师高效完成衬底文件转换,确保电磁仿真精度。

weixin_30855099的博客 301

abaqus应力值导出并进行后处理(同一节点多个应力值如何处理?)

Abaqus应力导出: ‘Tools’--- Probe values 在Probe Values里面可以选择需要导出的信息,比如‘Nodes’或者‘Elements’ 如果需要导出多个应力值或者其他信息可以选择‘Components’这个选项。 选择‘Selected’只输出一个正应力S33(对应截图中的) 如果是‘All Direct’,则是输出6个正应力S11, S22, S33, S12, S13, S23 ‘All Principals’输出三个正应力 在输出...

themingyi的博客 5万+

Tcp/ip协议 详解

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

满堂花醉三千客,一剑霜寒十四州 7840

STM32驱动数码管:从硬件连接到动态显示实现

本文详细介绍了使用STM32单片机驱动数码管的完整流程,从硬件连接到软件实现。内容涵盖共阳/共阴数码管原理、GPIO配置、段码表生成,并重点解析了多位数码管动态显示的核心技术,包括动态扫描原理、消影处理及实战代码,帮助开发者快速掌握这一嵌入式开发基础技能。

p5l2m9n4o6q的博客 572

tcp/ip协议详解

1、TCP/IP协议族是一个四层协议系统,自低而上分别是数据链路层、网络层、传输层、应用层。 ①数据链路层:实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。 ARP协议:将目标机器的IP地址转换为其物理地址。(数据链路层使用物理地址寻址一台机器) RARP协议:仅用于网络上的某些无盘工作站。 ②网络层:实现数据包的选路和转发。 IP协议:IP协议根据数据包的目的IP地址来决定如何投递它。 ICMP协议: ...

weixin_50539337的博客 1万+

i茅台APP加密参数逆向分析:MT-Device-ID与mt-v生成算法

在移动应用安全领域,参数加密是防止API滥用的重要手段。通过对通信协议的逆向分析,可以揭示加密参数的生成原理,这对理解移动应用安全机制具有重要意义。以i茅台APP为例,其关键接口使用了MT-Device-ID和mt-v两个加密参数,前者基于设备硬件信息生成,后者则通过动态签名机制确保请求时效性。这类技术广泛应用于电商、金融等需要高安全性的场景。通过抓包工具和逆向工程手段,可以还原出从设备指纹生成到动态签名的完整技术链条,其中涉及MD5、SHA256等常见哈希算法的应用。掌握这些加密参数的生成逻辑,不仅有助于

weixin_28568819的博客 318

STM32实战:电容触摸屏I2C转USB HID设备全解析

本文详细解析了基于STM32的电容触摸屏I2C转USB HID设备实现方案。通过硬件选型、协议分析和代码实现,展示了如何将GT911触摸屏数据转换为标准USB HID协议,并提供了关键调试经验与性能优化技巧,为智能家居控制面板等应用提供高性价比解决方案。

weixin_42548829的博客 320

安防行业新人也能看懂的TCP/IP协议详解

在嵌入式安防系统中,设备之间的通信、远程控制、视频流传输都离不开TCP/IP协议的支撑。作为网络通信的核心基础,TCP/IP协议却因其层级结构和抽象模型常常令新人困惑。本文以通俗语言剖析TCP/IP协议的结构、作用、工作机制及其在安防场景中的实际应用,帮助嵌入式安防从业者快速建立网络通信的核心认知。

yuhang_17的博客 1237

ROS激光雷达动态避障算法优化(C++实战)

本文深入探讨了ROS激光雷达动态避障算法的C++实战优化。针对动态环境的核心挑战,文章系统性地介绍了从激光数据预处理(降噪、瘦身)、动态障碍物检测与跟踪,到基于动态窗口法(DWA)的智能决策与调优的全流程。重点分享了如何将障碍物速度预测融入DWA打分函数,以实现更安全、流畅的避障,并提供了工程架构、性能优化及真机调试的实用建议。

weixin_29192141的博客 939

TCP/IP 详解 卷1:协议

  《TCP/IP详解 卷一:协议》脑图

age2cn的专栏 638

Python爬虫教程:如何爬取多平台电商商品信息(价格、评价、库存)

本文介绍了如何编写一个跨平台电商商品爬虫,爬取多个平台的商品信息,包括商品名称、价格、评价等数据。通过Python的爬虫库(如requestsSelenium)和数据处理库(如pandasmatplotlib)的结合,我们可以高效地获取和分析电商平台上的商品信息。

2201_76125261的博客 916

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

上一篇: 【Qt styleSheet样式表】
下一篇: Win10去除此电脑默认的七个文件夹
ZTH_Zero
博客等级 码龄8年 10粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZTH_Zero

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值