IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> tcp/ip协议详解 -> 正文阅读

[网络协议]tcp/ip协议详解

1、TCP/IP协议族是一个四层协议系统,自低而上分别是数据链路层、网络层、传输层、应用层。
在这里插入图片描述
(1)数据链路层:实现了网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。
ARP协议:将目标机器的IP地址转换为其物理地址。(数据链路层使用物理地址寻址一台机器)
RARP协议:仅用于网络上的某些无盘工作站。

(2)网络层:实现数据包的选路和转发。
IP协议:IP协议根据数据包的目的IP地址来决定如何投递它。如果数据包不能直接发送给目的主机,那么IP协议就为它寻找一个适合的下一跳路由器,并将数据包交付给该路由器来转发。多次重复这一过程,数据包最终到达目的主机,或者由于发送失败而被丢弃。(IP协议使用逐跳的方式来确定通信路径。)
ICMP协议:它是IP协议的重要补充,主要用于检测网络连接。ICMP报文分为两大类:①差错报文 ②查询报文。

(3)传输层:为两台主机上的应用程序提供端到端的通信。传输层是关心通信的起始端和目的端。
在这里插入图片描述
传输层协议主要有三个:①TCP协议 ②UDP协议 ③ SCTP协议
①TCP协议:为应用层提供可靠的、面向连接的和基于流的服务。TCP协议使用超时重传、数据确认等方式来确保数据包被正确地发送给目的端(因此TCP服务是可靠的)。使用TCP协议的通信双方必须先建立TCP连接,并在内核中为TCP连接维持一些必要的数据结构,比如连接的状态、读写缓冲区,以及诸多定时器等。当通信结束时,双方必须关闭连接以释放这些内核数据。TCP服务是基于流的。基于流的数据是没有边界限制的,它源源不断的从通信的一段流入另一端。发送端可以逐个字节地向数据流中写入数据,接收端也可以逐个字节流地将他们读出。
②UDP协议(用户数据报协议):为应用层提供不可靠、无连接和基于数据报的服务。“不可靠“:无法保证数据正确的从发送端到目的端。如果数据在中途丢失,或者目的端通过数据校验发现数据错误将其丢失,而UDP只是简单的通知应用程序发送失败。因此,使用UDP协议的应用程序通常要自己处理超时重传、数据处理等逻辑。UDP协议是无连接的,即通信双方不保持一个长久的联系,因此应用程序每次发送数据都要明确的指出接收端地址。基于数据包服务,是对于流服务而言。每个UDP数据包都有一个长度,接收端必须以该长度为最小单位将其内容一次性读出,否则数据将被截断。
③SCTP协议(流控制传输协议):在因特网上传输电话信号而设计的。

(4)应用层:负责处理应用程序的逻辑(用户空间实现)。数据链路层、网络层和传输层负责处理网络通信细节(在内核空间实现)。
①ping是应用程序,利用ICMP检测网络连接,是调试网络的必备工具。
②telnet协议是一种远程登录协议。
③OSPF协议是一种多态路由更新协议,用于路由器之间的通信,以告知对方各自路由的信息。
④DNS协议通过机器域名到IP地址的转换。
应用层协议可能跳过传输层直接使用网络层的服务。

2、封装:应用程序数据在发送到物理网络之前,将沿着协议栈从上往下依次传递,每层数据都在上层协议的基础上加上自己的头部信息,以实现该层功能。
在这里插入图片描述
经过TCP封装后的数据称为TCP报文段(TCP段)。前文提到,TCP协议为通信双方维持的一个连接,并在内核中处理相关数据。这部分数据中的TCP头部信息和TCP内核缓冲区的数据一起构成TCP报文段。
在这里插入图片描述
当发端向一个TCP连接写入数据时,TCP模块首先把数据复制到与该连接对应的内核缓冲区,然后TCP模块调用IP模块提供服务,传递参数包括TCP头部信息和TCP发送缓冲区的数据(TCP报文段)。

经过UDP封装后的数据交UDP报文段。当一个UDP数据报被发送成功之后,UDP内核缓冲区的数据就被丢弃了。如果应用程序检测到该数据报未能被接收端正确接收,并打算重新发送这个数据,则应用程序需要重新从用户空间将数据拷贝到UDP内核发送缓冲区中。

经过数据链路层封装的数据为帧。(帧才是最终在物理网络上传送的字节序列。至此,封装过程完成。)
在这里插入图片描述

3、分用
分用:当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需信息,并将处理后的帧交给目的应用程序。
在这里插入图片描述
IP协议、ARP协议和RARP协议使用2字节的类型字段来标识上层协议。

ICMP协议、TCP协议和UDP协议都使用IP协议,所以IP数据报的头部采用16位的协议的协议字段来区分他们。

TCP报文段和UDP报文段则通过其头部16位的端口号字段来区分上层应用程序。

帧通过上述分用步骤后,最终将封装前的原始数据送至目的服务。

4、测试网络
该测试网络主要用于分析ARP协议、IP协议、ICMP协议、TCP协议和DNS协议。我们通过抓取该网络上的以太网帧,查看其中的以太网帧头部、IP数据报头部、TCP报文段头部信息,以获取网络通信的细节。
在这里插入图片描述

5、ARP协议工作原理
ARP协议能实现任意网络层地址到任意物理地址的存在。
工作原理:主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址,此网络上的其他机器都会收到这个请求,但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址。
(1)以太网ARP请求/应答报文详解
ARP请求/应答报文长度为28个字节。
在这里插入图片描述
硬件类型字段定义物理地址类型,值为1表示MAC地址。
协议类型字段表示要映射的协议地址类型,值为0x800,表示IP地址。
硬件地址长度和协议地址长度(单位:字节),对于MAC地址来说 ,其长度为6;对IP(v4)地址来说,其长度为4。
操作字段指出4种类型:ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)、RARP应答(值为4)。
最后4个字段指通信双方的以太网地址和IP地址。

(2)ARP高速缓存的查看和修改
ARP维护一个高速缓存,其中包含经常访问或最近访问的机器的IP地址到物理地址的映射。这样避免了重复的ARP请求,提高了发送数据报的速度。

(3)ARP通信过程
ARP请求和应答是从以太驱动程序发出的。
在这里插入图片描述

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-19 17:56:53  更:2021-11-19 17:58:26 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 7:18:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码