【计算机网络三】一篇文章详解TCP/IP四层协议簇

news2024/10/28 14:08:29

目录

TCP/IP四层协议簇

1.应用层

DNS

NAT

NAPT

HTTP/HTTPS

2.传输层

TCP协议

UDP协议

3.网络层

IP协议

4.数据链路层

以太网

ARP协议


TCP/IP四层协议簇

        TCP/IP四层协议簇是目前世界上最流行的网络协议分层方式,本篇文章我将带大家从上到下详解四层协议中遇到的常见协议以及协议的约定格式,带大家领略一条数据是怎样由网络从一台机器传输到另一台机器的。

发送数据报时,发送端主机都需要先根据网络分层从上到下封装:
  1. 应用层:应用程序基于 HTTP 协议封装
  2. 传输层:操作系统基于 TCP/UDP 协议封装(包含源端口和目的端口)
  3. 网络层:操作系统基于 IP 协议封装(包含源IP和目的IP)
  4. 数据链路层层:操作系统基于以太网帧封装(包含源MAC和目的MAC)

1.应用层

DNS

DNS ,即 Domain Name System ,域名系统。 DNS 是一整套从域名映射到 IP 的系统。
TCP/IP 中使用 IP 地址来确定网络上的一台主机,但是 IP 地址不方便记忆,且不能表达地址组织信息,于是人们发明了域名 ,并通过 域名系统 来映射域名和 IP 地址。如 www.baidu.com便是一个域名。
网络通信发送数据时,如果使用目的主机的域名,需要先通过 域名解析 查找到对应的 IP 地址:
  1. 域名解析的过程,可以简单的理解为:发送端主机作为域名系统树形结构的一个子节点,通过域名信息,从下到上查找对应IP地址的过程。如果到根节点(根域名服务器)还找不到,即找不到该主机。
  2. 域名解析使用DNS协议来传输数据。DNS协议是应用层协议,基于传输层UDPTCP协议来实现。

NAT

NAT技术源自于IPV4的地址数量不足的问题,因为IPV4设计之初没有考虑到今天的网络设备会如此丰富,IPV4只有32位,因为网络传输的规则意味着只有2的32次方台设备才能接入网络,多出来的设备无法接入互联网。

NAT 技术当前解决 IP 地址不够用的主要手段,是路由器的一个重要功能:
  • NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技术方法:
  • 很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全IP
  • 全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的;

 NAT IP转换过程

NAPT

如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中,目的IP 都是相同的。那么 NAT 路由器如何判定将这个数据包转发给哪个局域网的主机呢?
这时候 NAPT 来解决这个问题了。使用 IP+port 来建立这个关联关系
这种关联关系也是由 NAT 路由器自动维护的。例如在 TCP 的情况下,建立连接时,就会生成这个表项;在断开连接后,就会删除这个表项。

NAT技术存在的缺陷:

由于 NAT 依赖这个转换表,所以有诸多限制:
  1. 无法从NAT外部向内部服务器建立连接;
  2. 转换表的生成和销毁都需要额外开销;
  3. 通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开;

HTTP/HTTPS

HTTP和HTTPS是WEB开发的重点协议,主要用于统一各公司服务器和浏览器信息传输的一个约定,我们通过浏览器访问的众多网站大都是满足HTTP/HTTPS协议的,HTTPS是HTTP协议的加密版本,具体的HTTP和HTTPS协议详细内容我将会在接下来的博客进行详细讲解。

2.传输层

负责数据能够从发送端传输接收端。

TCP协议

TCP ,即 Transmission Control Protocol ,传输控制协议。见名思意,要对数据的传输进行一个详细的控制。
TCP协议段格式如下:

协议格式各模块含义如下:

  • /目的端口号:表示数据是从哪个进程来,到哪个进程去;
  • 32位序号/32位确认号:下面博客讲解;
  • 4TCP报头长度:表示该TCP头部有多少个32bit(有多少个4字节);所以TCP头部最大长度是15 * 4 = 60
  • 6位标志位:
URG :紧急指针是否有效
ACK :确认号是否有效
PSH :提示接收端应用程序立刻从 TCP 缓冲区把数据读走
RST :对方要求重新建立连接;我们把携带 RST 标识的称为 复位报文段
SYN :请求建立连接;我们把携带 SYN 标识的称为 同步报文段
FIN :通知对方,本端要关闭了,我们称携带 FIN 标识的为 结束报文段
  • 16位窗口大小:下篇博客讲解;
  • 16位校验和:发送端填充,CRC校验。接收端校验不通过,则认为数据有问题。此处的检验和不光包含TCP首部,也包含TCP数据部分。
  • 16位紧急指针:标识哪部分数据是紧急数据;
  • 40字节头部选项:下篇博客讲解;

UDP协议

UDP(即User Datagram Protocol,用户数据报协议)是在一组互连的计算机网络环境中提供分组交换计算机通信的数据报模式。UDP为应用程序提供了一种以最少的协议机制向其他程序发送消息的过程。该协议是面向事务的,不保证传递和重复保护。需要有序、可靠地传输数据流的应用程序应使用传输控制协议 (TCP)。

UDP协议端格式:

 

  • 16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度;
  • 如果校验和出错,就会直接丢弃;

 UDP协议的特点:

  1. 无连接:知道对端的IP和端口号就直接进行传输,不需要建立连接;
  2. 不可靠:没有任何安全机制,发送端发送数据报以后,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息;
  3. 面向数据报:应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并;用UDP传输100个字节的数据:如果发送端一次发送100个字节,那么接收端也必须一次接收100个字节;而不能循环接收10次,每次接收10个字节。
  4. 缓冲区:UDP只有接收缓冲区,没有发送缓冲区:UDP没有真正意义上的 发送缓冲区。发送的数据会直接交给内核,由内核将数据传给网络层协议进行后续的传输动作;UDP具有接收缓冲区,但是这个接收缓冲区不能保证收到的UDP报的顺序和发送UDP报的顺序一致;如果缓冲区满了,再到达的UDP数据就会被丢弃;UDP的socket既能读,也能写,这个概念叫做 全双工。
  5. 大小受限:UDP协议首部中有一个16位的最大长度。也就是说一个UDP能传输的数据最大长度是64K(包含UDP首部)。

 基于UDP的应用层协议:

  • NFS:网络文件系统
  • TFTP:简单文件传输协议
  • DHCP:动态主机配置协议
  • BOOTP:启动协议(用于无盘设备启动)
  • DNS:域名解析协议

 TCP/UDP对比:

  • TCP用于可靠传输的情况,应用于文件传输,重要状态更新等场景;
  • UDP用于对高速传输和实时性要求较高的通信领域,例如,早期的QQ,视频传输等。另外UDP可以用于广播;

3.网络层

在复杂的网络环境中确定一个合适的路径。

IP协议

协议头格式如下:

具体解释如下: 

  • 4位版本号(version):指定IP协议的版本,对于IPv4来说,就是4。
  • 4位头部长度(header length):IP头部的长度是多少个32bit,也就是 length * 4 的字节数。4bit表示最大的数字是15,因此IP头部最大长度是60字节。
  • 8位服务类型(Type Of Service):3位优先权字段(已经弃用),4位TOS字段,和1位保留字段(必须置为0)。4位TOS分别表示:最小延时,最大吞吐量,最高可靠性,最小成本。这四者相互冲突,只能选择一个。对于ssh/telnet这样的应用程序,最小延时比较重要;对于ftp这样的程序,最大吞吐量比较重要。
  • 16位总长度(total length):IP数据报整体占多少个字节。
  • 16位标识(id):唯一的标识主机发送的报文。如果IP报文在数据链路层被分片了,那么每一个片里面的这个id都是相同的。
  • 3位标志字段:第一位保留(保留的意思是现在不用,但是还没想好说不定以后要用到)。第二位置为1表示禁止分片,这时候如果报文长度超过MTU,IP模块就会丢弃报文。第三位表示"更多分片",如果分片了的话,最后一个分片置为1,其他是0。类似于一个结束标记。13位分片偏移(framegament offset):是分片相对于原始IP报文开始处的偏移。其实就是在表示当前分片在原报文中处在哪个位置。实际偏移的字节数是这个值 * 8 得到的。因此,除了最后一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了)。
  • 8位生存时间(Time To Live,TTL):数据报到达目的地的最大报文跳数。一般是64。每次经过一个路由,TTL -= 1,一直减到0还没到达,那么就丢弃了。这个字段主要是用来防止出现路由循环。
  • 8位协议:表示上层协议的类型。
  • 16位头部校验和:使用CRC进行校验,来鉴别头部是否损坏。
  • 32位源地址和32位目标地址:表示发送端和接收端
  • 选项字段(不定长,最多40字节)

4.数据链路层

以太网

        "以太网" 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容。例如:规定了网络拓扑结构,访问控制方式,传输速率等。
以太网的帧格式如下所示:

  • 源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的;
  • 帧协议类型字段有三种值,分别对应IP、ARP、RARP;
  • 帧末尾是CRC校验码。

ARP协议

ARP不是一个单纯的数据链路层协议,而是一个介于数据链路层和网络层之间的协议。

ARP 协议的作用
ARP 协议建立了主机 IP 地址 和 MAC 地址 的映射关系。
  • 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址;
  • 数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃;
  • 因此在通讯前必须获得目的主机的硬件地址;

 

MAC 地址,即 Media Access Control Address ,用于标识网络设备的硬件物理地址。
  • 主机具有一个或多个网卡,路由器具有两个或两个以上网卡;其中每个网卡都有唯一的一个MAC地址。
  • 网络通信,即网络数据传输,本质上是网络硬件设备,将数据发送到网卡上,或从网卡接收数据。
  • 硬件层面,只能基于MAC地址识别网络设备的网络物理地址。
  • MAC地址用来识别数据链路层中相连的节点;
  • 长度为48位,及6个字节。一般用16进制数字加上冒号的形式来表示(例如:08:00:27:03:fb:19)
  • 在网卡出厂时就确定了,不能修改。虚拟机中的MAC地址不是真实的MAC地址,可能会冲突;也有些网卡支持用户配置MAC地址

总结IP地址和MAC地址:

  • IP地址描述的是路途总体的起点和终点;是给人使用的网络逻辑地址。
  • MAC地址描述的是路途上的每一个区间的起点和终点,即每一跳的起点和终点;是给网络硬件设备使用的网络物理地址。

 

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

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

相关文章

开放式蓝牙耳机哪个品牌好用?爆款开放式耳机推荐!

在当今蓝牙耳机市场中,开放式蓝牙耳机以其独特的设计和舒适的佩戴体验,逐渐成为众多消费者的新宠。然而,面对众多品牌和款式的开放式蓝牙耳机,消费者往往陷入选择的困境。究竟哪个品牌的开放式蓝牙耳机真正好用?其性能…

Python实现贝叶斯优化器(Bayes_opt)优化简单循环神经网络回归模型(SimpleRNN回归算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后关注获取。 1.项目背景 贝叶斯优化器 (BayesianOptimization) 是一种黑盒子优化器,用来寻找最优参数。 贝叶斯…

C#使用开源库EasyModbusTCP跟PLC进行通讯开发步骤

使用C#进行非标自动化系统开发一般涉及的知识包含后台、前台、手持终端、客户端软件等功能模块的开发,其中后台程序连接数据库,而前台Vue界面,手持终端Android程序,客户端C#软件都会跟后台接口程序进行数据交换。 本文主要讨论C#客…

基于知识图谱的紧急事故决策辅助系统

现代社会紧急事故频发,而处理这些突发事件的效率直接决定了后续影响的大小。这时候,数据智能的解决方案会显得尤为重要!今天为大家分享一个用【知识图谱】技术驱动的紧急事故决策辅助系统,不仅能帮助你快速处理事故信息&#xff0…

当有违法数据时,浏览器不解析,返回了undefined,导致数据不解析

现象:页面上没有看到数据 排查:断点到线上的源码里:1、协议回调确实没有拿到数据是个undefined 2、network里看服务确实响应了数据 3、控制台没有任何报错。 心情:莫名其妙的现象 我本地有json格式化工具,copy进去后&…

STM32硬件平台

STM32 系列是 STMicroelectronics 设计的高度灵活、广泛应用的微控制器(MCU)系列,支持从低功耗应用到高性能处理的需求,适用于工业、汽车、消费电子和物联网等广泛领域。STM32 系列具有广泛的硬件种类和丰富的功能,以下…

uniapp 引入了uview-ui后,打包错误,主包过大解决方案

原因:由于使用uniapp来设计小程序,使用uview的组件库,导致了主包过大,无法打包 前提条件:已经完成了分包,如果还没有分包的先分包,需要上传代码时用到 1. 通常情况,大多数都是通过点…

VUE3实现古典音乐网站源码模板

文章目录 1.设计来源1.1 网站首页页面1.2 古典音乐页面1.3 著名人物页面1.4 古典乐器页面1.5 历史起源页面1.6 登录页面1.7 注册页面 2.效果和源码2.1 动态效果2.2 目录结构 源码下载万套模板,程序开发,在线开发,在线沟通 作者:xc…

MIT 6.824 Lab1记录

MapReduce论文阅读 1. 编程模型 Map 函数(kv -> kv) Map 函数将输入的键值对处理为一系列中间值(键值对),并将所有的中间结果传递给 Reduce 处理。 map(String key, String value):// key: document name// val…

PHP员工管理系统小程序

💼高效管理,从“员工管理系统”开始💼 📋【一键录入,信息整合】📋 你是否还在为整理员工信息而手忙脚乱?纸质档案易丢失、电子表格易混乱,这些问题在“员工管理系统”面前都将迎刃…

如何使用ssm实现电商扶贫平台网站

TOC 10929ssm电商扶贫平台网站 第1章 绪论 1.1背景及意义 系统管理也都将通过计算机进行整体智能化操作,对于电商扶贫平台网站 所牵扯的管理及数据保存都是非常多的,例如管理员;首页、个人中心、商品分类管理、热门商品管理、用户管理、系…

Android 应用申请 Google MBA权限

​ Google Case链接:89 > 34810 > 30025 > 155353 > Handheld > MBA Policies 按照指引填写模板 This bug is for the approval of MBAs under [13.2.2 Pregrant permissions policy](https://docs.partner.android.com/gms/policies/domains/mba#m…

DS3231时钟芯片全解析——概况,性能,MCU连接,样例代码

DS3231概述: 数据: DS3231是一个超高精度I2C实时时钟芯片,带有集成的温度补偿晶振。误差范围:温度范围为0摄氏度到40摄氏度(2PPM),温度范围为-40摄氏度到85摄氏度(3.5PPM&#xff0c…

栈和队列-栈的练习题

1. 逆波兰表达式 题目: 给出一个算数式的后缀表达式,我们来求他最后算数值. 在解题之前我们来认识一下中缀表达式,和后缀表达式(逆波兰表达式 我们在写数学遇到的那种形式的算数表达式就是中缀表达式,我们要从中缀表达式变为后缀表达式(逆波兰式),计算机时不知道式子的计算…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-25

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-25 0. 前言 大语言模型在很多领域都有成功的应用,在本期计算机前沿技术进展研究介绍中,我们将带来一篇用大语言模型进行诺贝尔文学作品分析的论文。虽然有一定趁最近诺贝尔奖热潮的意味&…

现代数字信号处理I-极大似然估计 学习笔记

目录 1. 极大似然估计的模型介绍 2. 极大似然估计可以达到CRLB的说明 2.1 前期准备:符号定义及说明 2.2 中心极限定理 2.3 大数定理 2.4 说明思路 2.5 具体过程 说明:此部分内容在2024版本的课程中没有提供,需要参考2023之前的课程&…

R语言笔记(五):Apply函数

文章目录 一、Apply Family二、apply(): rows or columns of a matrix or data frame三、Applying a custom function四、Applying a custom function "on-the-fly"五、Applying a function that takes extra arguments六、Whats the return argument?七、Optimized…

基于贝叶斯优化的K折交叉验证BP回归模型(可预测未来数据)

基于贝叶斯优化的K折交叉验证BP回归模型(可预测未来数据) 目录 基于贝叶斯优化的K折交叉验证BP回归模型(可预测未来数据)效果一览基本介绍程序设计参考资料 效果一览 基本介绍 基于贝叶斯优化的K折交叉验证BP回归模型的多输入单一输出回归模型 Matlab版本:2020a及以…

深度学习_循环神经网络_预测平安中国股价(文末附带数据集下载链接, 长期有效, 如果有大佬愿意帮忙, 我先在这磕一个,感谢)

简介: 使用循环神经网络RNN对股价进行预测, 也就是搭建循环神经网络对中国平安的收盘股价进行预测 深度学习训练流程 1.数据集导入 2.数据预处理 3.模型训练 模型结构要求: 单层简单R…

U盘恢复数据,这四款软件你必须知道!

不管是哪个行业哪个职位,数据安全都是很重要的。比如说我认识的财务姐姐,每天处理的财务报表、客户信息、合同文件等,都必须确保万无一失,尤其是各种U盘数据。为了防止数据丢失后找不到数据的情况,今天来和大家分享四款…