TCPIP协议学习

news2025/1/9 1:16:46

TCP协议

连接导向:TCP是一种面向连接的协议,这意味着通信的两端在建立通信之前必须通过握手过程建立连接。握手过程包括三次握手,其中客户端向服务器发送连接请求,服务器回复确认,最后客户端再次确认连接。这样建立的连接可确保可靠的数据传输。

可靠性:TCP提供可靠的数据传输,通过使用确认和重传机制来确保数据正确到达目标。发送方将数据分成多个小的数据块(称为报文段),并将每个报文段编号。接收方在收到报文段后会发送确认消息给发送方,以确认已经接收到的报文段。如果发送方没有收到确认消息,它会认为数据丢失,并重新发送数据。这样可以确保数据的可靠性和完整性。

流量控制:TCP使用滑动窗口机制进行流量控制。在通信双方建立连接时,它们会协商一个窗口大小,也就是允许发送方发送的未确认数据的最大量。接收方会告诉发送方它当前的窗口大小,发送方会根据窗口大小来控制发送速率,确保接收方能够及时处理接收到的数据,并避免数据的丢失。

拥塞控制:TCP通过使用拥塞窗口和拥塞避免算法来控制网络拥塞。拥塞窗口指的是发送方可以发送的未确认数据的最大量。通过监视网络负载和延迟,TCP可以动态地调整拥塞窗口的大小,以避免网络拥塞并提高网络性能。

面向字节流:TCP是一种面向字节流的协议,它将数据流分割成小的字节流进行传输,而不考虑应用层数据的边界。这意味着在接收端,TCP将接收到的数据重新组装成应用层认为有意义的消息。

双向通信:TCP提供了全双工的双向通信能力,这意味着通信的两端可以同时发送和接收数据,并且可以独立地进行发送和接收操作。

流量控制与拥塞控制的区别:

流量控制,针对的是单个连接数据处理能力的控制。拥塞控制针对的是整个网络环境,数据处理能力的控制。

TCP报文格式

源端口号(16位):指示发送方的端口号。

目标端口号(16位):指示接收方的端口号。

序号号码(32位):指示报文段的第一个字节序号。

确认号码(32位):在确认报文中,表示接收到的数据的下一个期望序号;在数据报文中,表示发送方期望收到的下一个序号。

数据偏移(4位):指示TCP头部的长度,以32位字(4字节)为单位。这个字段指定了TCP头部的长度,最大长度为60字节。

保留(6位):保留未使用的位,预留供将来使用。

控制位(6位):用于指示TCP报文的不同控制标志,如SYN、ACK、FIN等。不同的标志组合代表不同的TCP操作。

窗口长度(16位):表示接收方的窗口大小,用于流量控制。

检验和(16位):用于对报文头部和数据部分进行差错检测,以确保数据的完整性。

紧急指针(16位):指示紧急数据的字节偏移量。在大多数情况下,此字段不被使用。

选项及填充(可变长度):可选字段,用于携带一些额外的信息,如最大报文长度、时间戳等。

数据:TCP协议负责传输的应用层数据。

三次握手:

第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给服务器端,客户端进入SYN_SENT状态,等待服务器端确认。

第二次握手:服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给客户端以确认连接请求,服务器端进入SYN_RCVD状态。

第三次握手:客户端收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给服务器端,服务器端检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,客户端和服务器端进入ESTABLISHED状态,完成三次握手,随后客户端与服务器端之间可以开始传输数据了。

四次挥手:

中断连接端可以是客户端,也可以是服务器端。

第一次挥手:客户端发送一个FIN=M,用来关闭客户端到服务器端的数据传送,客户端进入FIN_WAIT_1状态。意思是说"我客户端没有数据要发给你了",但是如果你服务器端还有数据没有发送完成,则不必急着关闭连接,可以继续发送数据。

第二次挥手:服务器端收到FIN后,先发送ack=M+1,告诉客户端,你的请求我收到了,但是我还没准备好,请继续你等我的消息。这个时候客户端就进入FIN_WAIT_2 状态,继续等待服务器端的FIN报文。

第三次挥手:当服务器端确定数据已发送完成,则向客户端发送FIN=N报文,告诉客户端,好了,我这边数据发完了,准备好关闭连接了。服务器端进入LAST_ACK状态。

第四次挥手:客户端收到FIN=N报文后,就知道可以关闭连接了,但是他还是不相信网络,怕服务器端不知道要关闭,所以发送ack=N+1后进入TIME_WAIT状态,如果Server端没有收到ACK则可以重传。服务器端收到ACK后,就知道可以断开连接了。客户端等待了2MSL后依然没有收到回复,则证明服务器端已正常关闭,那好,我客户端也可以关闭连接了。最终完成了四次握手。

IP协议

IP协议是网络层的核心,负责数据包的传输和路由。IP协议有两个版本:IPv4和IPv6。

IP协议的主要功能是在网络中传输数据包,负责数据包的路由和寻址。

IP协议定义了数据包的格式,包括源IP地址和目标IP地址,以及其他控制信息。

报文格式

IPv4报文格式

版本(Version)和头部长度(Header Length): IPv4报文的版本字段指示使用的是IPv4(值为4)。头部长度字段表示IP头部的长度,以32位字为单位,它通常是5,表示头部长度为20字节。

服务类型(Type of Service,TOS): 这个字段用于指示数据包的服务质量和处理方式,例如优先级、延迟、吞吐量等。

总长度(Total Length): 表示整个IP报文的总长度,包括IP头部和数据部分。

标识 (Identification):占16位。因为 IP是无连接的服务,数据报不存在按序接收的问题。当数据报由于长度超过网络的 MTU 而必须分片时,这个标识字段的值就被复制到所有的数据报的标识字段中。相同的标识字段的值使分片后的各数据报片最后能正确地重装成为原来的数据报。

标志 (Flag):长度为3 位。标志字段中的最低位记为 MF(More Fragment).MF=1即表示后面"还有分片"的数据报.MF=0表示这已是若干数据报片中的最后一个.标志字段中间的一位记为DF(Don’t Fragment),意思是"不能分片",只有当 DF=0时才允许分片.

片偏移:占 13位。也称段偏移,较长的分组在分片后,某片在原分组中的相对位置.也就是说,相对用户数据字段的起点,该片从何处开始。片偏移以 8个字节为偏移单位,这就是说,每个分片的长度一定是 8字节(64位)的整数倍。

生存时间(Time to Live,TTL): 表示数据包在网络中能够存活的最大路由器跳数,防止数据包在网络中无限循环。

协议(Protocol): 指示IP头部之后的数据部分使用的上层协议,如TCP、UDP或ICMP。

头部校验和(Header Checksum): 用于检验IP头部的完整性,以便接收方可以验证报文是否受损。

源IP地址(Source IP Address)和目标IP地址(Destination IP Address): 分别指示发送者和接收者的IP地址。

选项(Options): 可选字段,用于在需要时提供一些附加信息,如时间戳、记录路由等。

数据(Data): 实际传输的数据部分。

IPv6报文格式

版本(Version)和流量类别(Traffic Class): IPv6报文的版本字段指示使用的是IPv6(值为6)。流量类别字段类似于IPv4中的TOS字段,指示数据包的处理优先级。

流标签(Flow Label): 这个字段用于标识需要特殊处理的数据流,例如需要进行特定的服务质量保障。

负载长度(Payload Length): 表示IPv6头部之后的有效载荷(数据)部分的长度。

下一个头部(Next Header): 指示IPv6头部之后紧随的上层协议头部,如TCP、UDP或ICMPv6。

跳数限制(Hop Limit): 类似于IPv4中的TTL字段,指示数据包在网络中能够存活的最大路由器跳数。

源IPv6地址(Source IPv6 Address)和目标IPv6地址(Destination IPv6 Address): 分别指示发送者和接收者的IPv6地址。

数据(Data): 实际传输的数据部分。

需要注意的是,IPv6采用了扩展首部的概念,允许在头部后面添加多个扩展头部,从而增强了协议的灵活性和可扩展性。

扩展首部(Extension Headers): 用于在IPv6头部后添加可选的扩展信息,如分片、认证、安全等。

地址划分

IPv4地址划分: IPv4地址划分通常基于三个主要部分:网络部分、子网部分和主机部分。这种划分方式使用子网掩码来定义哪些位用于网络、子网和主机。例如,一个IPv4地址如192.168.1.1,其中子网掩码为255.255.255.0,意味着前24位用于网络和子网,后8位用于主机。

IPv6地址划分: IPv6的地址划分更加灵活,允许多种不同类型的地址。IPv6地址的前缀部分用于标识网络,而标识符部分用于标识主机。IPv6引入了以下几种类型的地址:单播地址(用于一对一通信)、多播地址(用于一对多通信)和任播地址(用于寻找网络中的最近设备)等。 IPv6还引入了前缀长度表示法,它允许根据需要使用不同长度的前缀来划分地址空间,从而更加灵活地配置网络。

网关的作用

IPv4 网关的作用:

数据包转发: 当主机发送数据包到不同的网络时,数据包会经过IPv4网关,网关根据目标IP地址和路由表来决定如何转发数据包。

网络地址转换(NAT): IPv4网关可以执行网络地址转换,允许多个主机共享单个公共IPv4地址,以缓解IPv4地址短缺问题。

防火墙和安全策略: IPv4网关可以实施防火墙和安全策略,保护网络免受恶意攻击和未经授权的访问。

流量管理: IPv4网关可以对流量进行管理和控制,确保网络资源被有效利用。

IPv6 网关的作用:

数据包转发: 和IPv4类似,当IPv6主机发送数据包到其他网络时,数据包会经过IPv6网关,网关根据目标IPv6地址和路由表来决定如何进行转发。

流量管理和负载均衡: IPv6网关可以管理流量并在多个路径之间分配负载,确保网络资源的高效利用。

网络地址转换(NAT66): IPv6通常不需要NAT,但某些情况下可能会用到NAT66,以实现特定的转换需求。

安全性和防火墙: IPv6网关也可以实施安全策略和防火墙规则,保护网络免受攻击。

多播和任播路由: IPv6支持多播和任播通信,IPv6网关可以负责处理这些特殊的路由情况。

IP协议经常与ARP协议和ICMP协议配合使用

网际控制报文协议 ICMP

传输的数据报可能丢失、重复、延迟、乱序,而ICMP协议定义了 5种差错报文(源抑制、超时、目的不可达、重定向、要求分段)和 4种信息报文(回应请求、回应应答、地址屏蔽码请求、地址屏蔽码应答)。ICMP协议使得IP更加稳固、有效。

地址解析协议 ARP

ARP协议在网络接口层,用于解析IP地址到物理MAC地址的映射,将IP地址转化为物理地址

什么是TCP/IP协议

TCP/IP协议(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在不同网络之间传输信息的协议集合,TCP/IP协议不单单指的是TCP和IP两个协议,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议。

TCP/IP协议是整个网络通讯中最基本的协议,无论是底层数据包发包还是数据链路通讯,TCP/IP协议都起到了很重要的作用,是网络技术中一个非常重要的理论基础。

TCP/IP协议内容

TCP/IP协议是一组网络通信协议,用于在计算机网络中进行数据传输和通信。它分为四个分层,每个分层提供不同的功能。以下是TCP/IP协议的内容,按照分层结构进行介绍:

网络接口层:

网络接口层对应的是iso七层模型中的数据链路层和物理层

网络接口层,也被称为数据链路层,是TCP/IP协议栈中的底层层次,位于协议栈的最底部。它的主要任务是处理与物理硬件和链路层相关的细节,以确保数据在物理媒体上的传输。

网络接口层通常分为两个子层:

逻辑链路控制子层(Logical Link Control, LLC):LLC子层负责建立逻辑连接、流量控制和错误检测。它是与网络层之间的接口,处理上层协议(如IP协议)的数据。

介质访问控制子层(Media Access Control, MAC):MAC子层负责管理物理地址(MAC地址)和决定何时发送数据帧到物理媒体。MAC子层通常依赖于底层的物理传输媒体,如以太网、Wi-Fi等,以确定数据帧的传输时机。

常见的网络接口层技术:

以太网:以太网是最常见的网络接口层技术,用于有线局域网(LAN)和广域网(WAN)。它定义了一系列标准,包括以太网帧的格式和MAC地址的管理。

Wi-Fi:Wi-Fi是一种无线局域网技术,也在网络接口层上操作。它使用了一种不同于有线以太网的协议和MAC地址管理。

PPP(Point-to-Point Protocol):PPP是一种用于建立点对点连接的协议,通常用于拨号连接和DSL等宽带接入技术。

HDLC(High-Level Data Link Control):HDLC是一种通用的数据链路协议,常用于串行通信。

网络层:

网络层对应的是iso七层模型中的网络层

网络层又称 网际 (IP) 层。

网络层主要负责数据包的传输和路由选择。它通过路由选择算法来选择最佳路径将数据包从源主机发送到目标主机,同时提供 IP 地址和逻辑地址的转换

IP(Internet Protocol)协议:IP协议是互联网中的一种网络协议,它是TCP/IP协议套件的核心协议之一。IP协议定义了数据在网络中的传输方式和寻址规则,它负责将数据包从源地址传送到目标地址。

传输层:

传输层对应的是iso七层模型中的传输层

传输层位于网络层之上,主要负责端到端的数据传输和可靠性保证。

TCP协议(Transmission Control Protocol):提供可靠的、面向连接的数据传输。它将数据分割成报文段,提供流量控制、拥塞控制和错误恢复等功能,确保数据按照顺序到达。

UDP协议(User Datagram Protocol):提供无连接的、不可靠的数据传输。适用于实时性要求较高的应用,如音视频传输和在线游戏。

应用层:

对应osi七层网络模型的前三层,应用层,表示层,会话层。

应用层包含了各种应用程序和协议,用于实现具体的网络服务。

HTTP协议用于Web浏览器和服务器之间的通信,支持超文本传输。

FTP协议用于文件传输,支持文件上传和下载。

SMTP协议用于电子邮件的发送。

DNS协议用于域名解析,将域名映射为IP地址。

DHCP协议用于自动分配IP地址和其他网络参数给设备。

SNMP协议用于网络设备的管理和监控。

Telnet和SSH协议用于远程登录到其他计算机。

TCP/IP协议的工作流程:

数据封装:
数据从上层往下传输时,会被逐层封装成不同的协议数据单元(PDU)。应用层数据(如HTTP请求)被封装为应用层PDU。
应用层PDU被封装为传输层PDU(TCP段或UDP数据报)。
传输层PDU被封装为网络层PDU(IP数据报)。
网络层PDU被封装为数据链路层PDU(以太网帧)。
数据链路层PDU被封装为物理层的比特流传输。


数据传输:
TCP协议提供面向连接的可靠传输,而UDP协议提供非连接的不可靠传输。

TCP使用三次握手建立连接,进行可靠数据传输,并通过序列号和应答机制保证数据的完整性和顺序性。
UDP没有连接的概念,直接将数据包发送给目标地址,不保证可靠性和顺序性。


数据路由:

IP协议负责数据包的路由和转发。每个数据包在网络中通过IP地址标识源和目标主机,经过路由器进行转发,直到到达目标主机。

数据解封装:

在接收端,数据包逐层被解封装,从物理层到应用层,进行相应的处理和分发。

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

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

相关文章

基于springboot+vue的校园失物招领系统-前后端分离(内含文档+源码+教程)

近年来,信息化管理行业的不断兴起,使得人们的日常生活越来越离不开计算机和互联网技术。首先,根据收集到的用户需求分析,对设计系统有一个初步的认识与了解,确定校园失物招领网站的总体功能模块。然后,详细…

InstructPix2Pix(CVPR2023)-图像编辑论文解读

文章目录 1.摘要2.背景3.算法3.1 生成多模态训练集3.1.1生成指令及成对caption3.1.2 依据成对的caption生成成对的图像 3.2 InstructPix2Pix 4.实验结果4.1基线比较4.2消融实验 5.结论 论文: 《InstructPix2Pix: Learning to Follow Image Editing Instructions》 …

什么是系统集成项目管理工程师,证书难考吗?

系统集成项目管理工程师,属于软考三个级别中的 “中级”,相当于中级职称。 系统集成项目管理程师是工信部和人社部举办的软考中新增开的一门考试。软考全称全国计算机技术与 软件专业技术资格(水平)考试,这门新开的系…

Nacos配置文件更新+热更新+多环境配置共享+集群搭建

对服务配置文件 场景: 如果多个服务对应的配置文件都需要更改时,可以利用配置管理,方便对配置文件进行更新,而且是在本地配置前先读取nacos的配置文件,优先级大于本地配置文件 配置步骤 1.首先在Nacos中的配置列表中增…

0-5V转4-20mA电路

本设计采用运放与三极管做二线制恒流源电路 分析: Va2*V- (1) (2) (3) 联立(2)(3)得: (5) 由于 (6) …

【AIGC专题】Stable Diffusion 从入门到企业级实战0403

一、前言 本章是《Stable Diffusion 从入门到企业级实战》系列的第四部分能力进阶篇《Stable Diffusion ControlNet v1.1 图像精准控制》第03节, 利用Stable Diffusion ControlNet Canny模型精准控制图像生成。本部分内容,位于整个Stable Diffusion生态…

剑指offer(C++)-JZ61:扑克牌顺子(算法-模拟)

作者:翟天保Steven 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 题目描述: 现在有2副扑克牌,从扑克牌中随机五张扑克牌,我们需要来判断一下是不是顺子。 有如…

MyBatisPlus 基础Mapperr接口:增删改查

MyBatisPlus 基础Mapper接口:增删改查 插入一条数据 代码 Testpublic void insert() {User user new User();user.setId(6L);user.setName("张三");user.setAge(25);user.setEmail("zhangsanexample.com");userMapper.insert(user);}日志 数…

postman token 请求头添加

思路: 1、登录成功后将 得到的token设置为集合变量 2、在需要携带Authorization的请求头上使用该集合变量 关键代码 const responseData pm.response.json(); if(responseData.code 1) {// 获取tokenconst {data:{token}} responseData// 设置为集合变量pm.colle…

Java8中List转Map报错“java.lang.IllegalStateException: Duplicate key”

排查思路 从报错的关键字中可以大致判断是是key冲突,Duplicate key在数据库的主键冲突错误中经常遇到,个人的思维惯性就联想到了数据库,从这个方向去排查,无果。抓耳挠腮之下,分析如下错误信息 java.lang.IllegalStateException: Duplicate key image(…

java八股文面试[数据库]——索引哪些情况下会失效

查询条件包含 or,会导致索引失效。 隐式类型转换,会导致索引失效,例如 id字段类型是varchar,我们 where id 1,这样就会触发隐式类型转换 like 通配符会导致索引失效,注意:”ABC%” 不会失效,…

问道管理:华为产业链股再度拉升,捷荣技术6连板,华力创通3日大涨近70%

华为产业链股6日盘中再度拉升,到发稿,捷荣技能涨停斩获6连板,华映科技亦涨停收成3连板,华力创通大涨超19%,蓝箭电子涨约11%,力源信息涨超4%。 捷荣技能盘中再度涨停,近7日已累计大涨超90%。公司…

如何成为一个高效的电商数据分析师

如何成为一个高效的电商数据分析师 文章目录 如何成为一个高效的电商数据分析师前言市场洞察平台品类品牌淘天京东抖音 商品 总结 前言 电商数据分析师 在我看来这个角色的定义其实很宽泛,现在从事电商这门生意的人都可以是,而且应该是一名电商数据分析师…

[BSidesCF 2019]Kookie 1 , cookie伪造

给了一个用户和密码 用户名:cookie 密码:monster 登录后查看cookie 发现就是用户名维持登录 那么修改用户名为 admin 得到flag

原型-设计模式

原型设计模式 原型模式应用场景:创建一个对象比较复杂,当前存在一个和需要创建的对象极其相似,我们就可以采用原型模式,在原来的对象上进行一个修改。 修改方案:在原来的基础上进行拷贝,在进行部分的修改。…

Pytest系列-快速入门和基础讲解(1)

前言 目前有两种纯测试的测试框架,pytest和unittestunittest应该是广为人知,而且也是老框架了,很多人都用来做自动化,无论是UI还是接口pytest是基于unittest开发的另一款更高级更好用的单元测试框架 单元测试框架介绍 单元测试…

【Arduino24】8*8点阵实验

硬件准备 8*8点阵:1个 旋钮电位器:1个 面包板:1块 杜邦线:若干 硬件连线 软件程序 //定义引脚 #define xKnob_pin A0 //x轴旋钮的引脚 #define yKnob_pin A1 //y轴旋钮的引脚 const int row_pin[8] { 6, 11, 10, 3, 17, 4…

Java电子招投标采购系统源码-适合于招标代理、政府采购、企业采购、等业务的企业

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…

playwright 录制脚本执行时出现文件编码错误 SyntaxError

playwright 录制脚本执行时出现文件编码错误 SyntaxError 问题描述: 使用playwright 进行脚本录制,录制的过程中,某些元素的定位方式由中文确认,脚本录制完成后,执行脚本报错,出现 SyntaxError: (unicode e…

无涯教程-JavaScript - BESSELK函数

描述 BESSELK函数返回修改后的Bessel函数Kn(x),该函数等效于针对纯虚参判断的Bessel函数。 这些也称为双曲贝塞尔函数。 语法 BESSELK(X, N)争论 Argument描述Required/OptionalXThe value at which to evaluate the function.RequiredNThe order of the function. If n i…