关于网络协议的笔记

简介:

协议, 网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连
接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的 三要素是:语
法、语义、时序。
为了使数据在网络上从源到达目的,网络通信的参与方必须 遵循相同的规则,这套规则称为协议
(protocol),它最终体现为在网络上传输的数据包的格式。
协议往往分成几个层次进行定义, 分层定义是为了 使某一层协议的改变不影响其他层次的协议

常见协议: 

应用层常见的协议有:FTP协议(File Transfer Protocol 文件传输协议)、HTTP协议(Hyper Text
Transfer Protocol 超文本传输协议)、NFS(Network File System 网络文件系统)。
传输层常见协议有:TCP协议(Transmission Control Protocol 传输控制协议)、UDP协议(User
Datagram Protocol 用户数据报协议)。
网络层常见协议有:IP 协议(Internet Protocol 因特网互联协议)、ICMP 协议(Internet Control
Message Protocol 因特网控制报文协议)、IGMP 协议(Internet Group Management Protocol 因特网组管理协议)。
网络接口层常见协议有:ARP协议(Address Resolution Protocol 地址解析协议)、RARP协议
(Reverse Address Resolution Protocol 反向地址解析协议)。

UDP协议:

1.  源端口号:发送方端口号。
2. 目的端口号:接收方端口号。
3. 长度: UDP 用户数据报的长度,最小值是 8 (仅有首部)。
4. 校验和:检测 UDP 用户数据报在传输中是否有错,有错就丢弃。
图的上方是UDP的头,下面是数据。

TCP协议

1. 源端口号:发送方端口号。
2. 目的端口号:接收方端口号。
3. 序列号:本报文段的数据的第一个字节的序号。
4. 确认序号:期望收到对方下一个报文段的第一个数据字节的序号。
5. 首部长度(数据偏移): TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远,即首部长
度。单位: 32 位,即以 4 字节为计算单位。
6. 保留:占 6 位,保留为今后使用,目前应置为 0。
7. 紧急 URG :此位置 1 ,表明紧急指针字段有效,它告诉系统此报文段中有紧急数据,应尽快传送。
8. 确认 ACK :仅当 ACK=1 时确认号字段才有效, TCP 规定,在连接建立后所有传达的报文段都必须把 ACK 1。
9. 推送 PSH :当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP 就可以使用推送( push )操作,这时,发送方 TCP 把 PSH 1 ,并立即创建一个报文段发送出去,接收方收到 PSH = 1 的报文段,就尽快地 (即“ 推送 向前)交付给接收应用进程,而不再等到整个缓存都填满后再向上交付
10. 复位 RST :用于复位相应的 TCP 连接。
11. 同步 SYN :仅在三次握手建立 TCP 连接时有效。当 SYN = 1 ACK = 0 时,表明这是一个连接请求报文段,对方若同意建立连接,则应在相应的报文段中使用 SYN = 1 ACK = 1 。因此, SYN 置 1 就表示这是一个连接请求或连接接受报文 12. 终止 FIN :用来释放一个连接。当 FIN = 1 时,表明此报文段的发送方的数据已经发送完毕,并要 求释放运输连接。
13. 窗口:指发送本报文段的一方的接收窗口(而不是自己的发送窗口)。
14. 校验和:校验和字段检验的范围包括首部和数据两部分,在计算校验和时需要加上 12 字节的伪头部。
15. 紧急指针:仅在 URG = 1 时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据),即指出了紧急数据的末尾在报文中的位置,注意:即使窗口为零时也可发送紧急数据。
16. 选项:长度可变,最长可达 40 字节,当没有使用选项时, TCP 首部长度是 20 字节。

IP协议

 

1.  版本: IP 协议的版本。通信双方使用过的 IP 协议的版本必须一致,目前最广泛使用的 IP 协议版本号为 4 (即 IPv4)。
2. 首部长度:单位是 32 位( 4 字节)。
3. 服务类型:一般不适用,取值为 0。
4. 总长度:指首部加上数据的总长度,单位为字节。
5. 标识( identification ): IP 软件在存储器中维持一个计数器,每产生一个数据报,计数器就加 1 , 并将此值赋给标识字段。
6. 标志( flag ):目前只有两位有意义。
标志字段中的最低位记为 MF MF = 1 即表示后面 还有分片 的数据报。 MF = 0 表示这已是若干数据报片中的最后一个。 标志字段中间的一位记为 DF ,意思是 不能分片 ,只有当 DF = 0 时才允许分片。
7. 片偏移:指出较长的分组在分片后,某片在源分组中的相对位置,也就是说,相对于用户数据段的起点,该片从何处开始。片偏移以 8 字节为偏移单位。
8. 生存时间: TTL ,表明是数据报在网络中的寿命,即为 跳数限制 ,由发出数据报的源点设置这个字段。路由器在转发数据之前就把 TTL 值减一,当 TTL 值减为零时,就丢弃这个数据报。
9. 协议:指出此数据报携带的数据时使用何种协议,以便使目的主机的 IP 层知道应将数据部分上交。给哪个处理过程,常用的 ICMP(1) IGMP(2) TCP(6) UDP(17) IPv6 41
10. 首部校验和:只校验数据报的首部,不包括数据部分。
11. 源地址:发送方 IP 地址。
12. 目的地址:接收方 IP 地址。

以太网帧协议:

类型:0x800表示 IP0x806表示 ARP0x835表示 RARP

也就是MAC地址的封装。

 ARP协议

1. 硬件类型: 1 表示 MAC 地址。
2. 协议类型: 0x800 表示 IP 地址。
3. 硬件地址长度: 6字节。(存的是硬件地址是6个字节,实际上这里存的就是长度,占一个字节)
4. 协议地址长度:4字节。(存的是硬件地址是6个字节,实际上这里存的就是长度,占一个字节)
5. 操作: 1 表示 ARP 请求, 2 表示 ARP 应答, 3 表示 RARP 请求, 4 表示 RARP 应答。

封装:

上层协议是如何使用下层协议提供的服务的呢?其实这是通过封装( encapsulation )实现的。应用程序数据在发送到物理网络上之前,将沿着协议栈从上往下依次传递。每层协议都将在上层数据的基础上加上自己的头部信息(有时还包括尾部信息),以实现该层的功能,这个过程就称为封装。
由下往上传递的时候,上层都是 通过下层的头部或尾部来获取所需的信息

分用

当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为分用(demultiplexing )。分用是依靠头部信息中的类型字段实现的。

自下向上传递时,不保留头部数据。 上一层封装之后的内容就是作为下一层的数据去使用。

网络通信的过程:

过程中有一个错误就终止操作。 A通过ARP协议(根据ip找到MAC地址)得到B的MAC地址。在此之后就无需ARP协议了,因为电脑已经缓存下来了。

ARP到底是怎么封装的:

 给局域网内的所有的机器发送ARP请求,然后通过数据报中的目的端IP地址来响应(是否匹配),匹配就应答。

ARP(地址解析协议)的请求和应答是在同一侧操作的,通常是由发送方发起的。

上图中的目的端以太网地址,一开始不知道就填:00:00:00:00:00:00:00。

以太网帧头中的目的物理地址,ff.ff.ff.ff.ff.ff.ff表示给局域网中所有的机器发送请求。ARP报文是数据。

ARP应答包更改其中的一些数据即可。 

以太网帧协议变换过程:

  1. 初始情况: 假设两台主机首次进行通信。发送端希望与目标主机通信,但只知道目标主机的IP地址。此时,发送端会构建一个以太网帧,以太网帧的类型字段设置为0x0800,表示上层协议是IPv4。

  2. ARP请求: 发送端发送这个以太网帧到本地网络,但由于只知道目标IP地址,而不知道目标MAC地址,所以发送的以太网帧的类型字段被设置为0x0806,表示上层协议是ARP。这个ARP请求广播到本地网络,目的是获取目标主机的MAC地址。

  3. 接收端响应: 目标主机接收到ARP请求,识别到自己的IP地址,然后发送ARP应答。这个ARP应答封装在以太网帧中,类型字段仍为0x0806。

  4. 获得MAC地址: 发送端接收到ARP应答,从中获取目标主机的MAC地址。此时,发送端已经知道目标主机的MAC地址,可以将这个MAC地址保存起来以便将来使用。

  5. 切换到IPv4通信: 接下来的通信可以使用IPv4。发送端构建以太网帧,类型字段设置为0x0800,表示上层协议是IPv4。这时发送端已经知道了目标主机的MAC地址,可以将IPv4数据封装在以太网帧中,然后发送到目标主机。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

水经微图系列产品新功能盘点!

水经微图,简称“微图”。 我们曾在直播中分享过微图APP苹果版的功能,本周四晚19:30我们将在另一个视频号分享盘点微图APP安卓版的详细功能,以及Web版近期上线的新功能功能。 微图APP安卓版 我们在《水经微图安卓版APP正式上线》一文中&…

configure: error: openSSL library not found.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

初识node.js(使用)

文章目录 项目目录介绍和运行流程1.index.html&#x1f447;2.整个项目的核心入口文件其实是main.js3.App.vue 组件化开发 和 根组件普通组件的注册1.局部注册2.全局注册 综合案例 项目目录介绍和运行流程 1.index.html&#x1f447; <!DOCTYPE html> <html lang&quo…

Offer必备算法_滑动窗口_八道力扣OJ题详解(由浅到深)

目录 滑动窗口算法介绍 ①力扣209. 长度最小的子数组 解析及代码 ②力扣3. 无重复字符的最长子串 解析及代码 ③力扣1004. 最大连续1的个数 III 解析及代码 ④力扣1658. 将x减到0的最小操作数 解析及代码 ⑤力扣904. 水果成篮 解析及代码1&#xff08;使用容器&…

初识SQL注入

目录 注入攻击 SQL注入 手工注入 Information_schema数据库 自动注入 介绍一下这款工具&#xff1a;sqlmap 半自动注入 前面给大家通过学习练习的方式将XSS攻击的几种形式和一些简单的靶场和例题的演示&#xff0c;从本篇开始我将和小伙伴们通过边复习、边练习的方式来进…

2024年购买阿里云服务器多少钱?1000元左右预算可购买的8款云服务器参考

1000元左右预算可以买到哪些配置的阿里云服务器&#xff1f;目前阿里云活动中价格在1000元左右的云服务器有8款&#xff0c;其中经济型e实例云服务器三款&#xff0c;通用算力型u1实例云服务器五款&#xff0c;碰到阿里云有优惠券或者代金券活动时&#xff0c;购买过程中还能使…

Angular组件(一) 分割面板ShrinkSplitter

Angular组件(一) 分割面板ShrinkSplitter 前言 分割面板在日常开发中经常使用&#xff0c;可将一片区域&#xff0c;分割为可以拖拽整宽度或高度的两部分区域。模仿iview的分割面板组件&#xff0c;用angular实现该功能&#xff0c;支持拖拽和[(ngModel)]双向绑定的方式控制区…

Dock的安装部署和基础命令

1 Docker基础 1.1 Docker概述 Docker是一个开源的应用容器引擎&#xff0c;用来运行容器里的运用&#xff0c;可以用来管理容器和镜像的一种工具&#xff0c;基于go语言开发并遵循了apache2.0协议开源。 Docker是在Linux容器里运行应用的开源工具&#xff0c;是一种轻量级的…

Java(TM) Platform SE binary (Process Id: 4412)

Java™ Platform SE binary (Process Id: 4412&#xff09;JAVA8安装过程中出现上述问题win10解决方法 打开任务管理器 在任务管理器中找到详细信息&#xff0c;然后根据上边的进程id找到对应的程序&#xff0c;右键结束任务即可。 在安装jdk17时候&#xff0c;同时出现了上…

05 双向链表

目录 1.双向链表 2.实现 3.OJ题 4.链表和顺序表对比 1. 双向链表 前面写了单向链表&#xff0c;复习一下 无头单向非循环链表&#xff1a;结构简单&#xff0c;一般不会单独用来存数据。实际中更多作为其他数据结构的子结构&#xff0c;如哈希桶、图的邻接等。另外这种结构在…

Pycharm中出现Comparison with None performed with equality operators

此图中警告翻译过来是 &#xff1a;与使用相等运算符执行的None进行比较 这里不应该使用 或者 &#xff01; 而应改为 is 或者 is not

聚观早报 | 华为P70 Art细节曝光;红魔9 Pro龙年限定版官宣

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 1月24日消息 华为P70 Art细节曝光 红魔9 Pro龙年限定版官宣 努比亚Z60 Ultra龙年限定版 小米14 Ultra或没有双版…

创新医疗服务:宠物在线问诊系统的搭建与应用

随着科技的不断进步&#xff0c;创新的医疗服务方式也日渐成为宠物主人关心爱宠健康的首选。本文将深入介绍如何搭建一套创新的宠物在线问诊系统&#xff0c;并展示其应用的技术代码。 1. 系统架构与技术选择 在开始搭建之前&#xff0c;我们需要设计系统的架构并选择合适的…

【Linux工具篇】编辑器vim

目录 vim的基本操作 进入vim(正常模式&#xff09; 正常模式->插入模式 插入模式->正常模式 正常模式->底行模式 底行模式->正常模式 底行模式->退出vim vim正常模式命令集 vim插入模式命令集 vim末行模式命令集 vim操作总结 vim配置 Linux编译器…

网络安全的使命:守护数字世界的稳定和信任

在数字化时代&#xff0c;网络安全的角色不仅仅是技术系统的守护者&#xff0c;更是数字社会的信任保卫者。网络安全的使命是保护、维护和巩固数字世界的稳定性、可靠性以及人们对互联网的信任。本文将深入探讨网络安全是如何履行这一使命的。 第一部分&#xff1a;信息资产的…

使用Sobel算子把视频转换为只剩边缘部分

效果展示 原始视频 修改后的视频 整体代码 import cv2vc cv2.VideoCapture(test.mp4)if vc.isOpened():open, frame vc.read() else:open Falsei 0 while open:ret, frame vc.read()if frame is None:breakif ret True:i 1# 转换为灰度图gray cv2.cvtColor(frame, cv…

复合机器人颠覆传统上下料,实现高效精准生产

在追求高效、精准生产的现代制造业中&#xff0c;传统的上下料方式已经无法满足企业的需求。复合机器人的出现&#xff0c;为制造业带来了革命性的变革。它不仅提高了生产效率&#xff0c;降低了生产成本&#xff0c;还为企业创造了更大的竞争优势。复合机器人的广泛应用&#…

多维时序 | Matlab实现CNN-BiGRU-Mutilhead-Attention卷积双向门控循环单元融合多头注意力机制多变量时间序列预测

多维时序 | Matlab实现CNN-BiGRU-Mutilhead-Attention卷积双向门控循环单元融合多头注意力机制多变量时间序列预测 目录 多维时序 | Matlab实现CNN-BiGRU-Mutilhead-Attention卷积双向门控循环单元融合多头注意力机制多变量时间序列预测效果一览基本介绍程序设计参考资料 效果一…

GD32E230C8T6《调试篇》之 FMC(闪存)的读写 + USART打印

实验&#xff1a;按键DIG4&#xff08;保存键&#xff09;&#xff0c;任意按下一个数字后&#xff0c;再按保存键写入flash;断电后重新上电&#xff0c;从 flash里读值&#xff0c;显示到数码管 实验工具GD32E230C8T6查看GPIO查看Datasheet 2.6.7章节GPIO 复用 查看用户手册代…

Python Django的学生选课管理系统,实现多用户登录注册,可选课可评课

学生选课管理系统是一个基于Python Django开发的教务管理系统&#xff0c;旨在提供方便快捷的选课服务和学籍管理功能。该系统分为教师端和学生端两个角色&#xff0c;为教师和学生提供了不同的功能和权限。 教师端功能&#xff1a; 教师可以登录系统后&#xff0c;进行课程管…
最新文章