Linux网络编程——网络基础

Linux网络编程——网络基础

    • 1. 网络结构模式
      • 1.1 C/S 结构
      • 1.2 B/S 结构
    • 2. MAC 地址
    • 3. IP地址
      • 3.1 简介
      • 3.2 IP 地址编址方式
    • 4. 端口
      • 4.1 简介
      • 4.2 端口类型
    • 5. 网络模型
      • 5.1 OSI 七层参考模型
      • 5.2 TCP/IP 四层模型
    • 6. 协议
      • 6.1 简介
      • 6.2 常见协议
      • 6.3 UDP 协议
      • 6.4 TCP 协议
      • 6.5 IP 协议
      • 6.6 以太网帧协议
      • 6.7 ARP 协议
      • 6.8 封装
      • 6.9 分用 / 解封装
    • 7. 网络通信的过程

1. 网络结构模式

1.1 C/S 结构

(1)简介
    客户机 - 服务器 ,即 Client - ServerC/S)结构。C/S 结构通常采取 两层结构服务器负责数据的管理客户机负责完成与用户的交互任务客户机是因特网上访问别人信息的机器,服务器则是提供信息供人访问的计算机。

    客户机 通过 局域网服务器 相连,接受 用户 的请求,并通过网络向服务器提出请求,对数据库进行操作。服务器接受客户机的请求,将数据提交给客户机客户机 将数据进行计算 并将结果呈现给 用户 。服务器还要提供完善安全保护及对数据完整性的处理等操作,并允许多个客户机同时访问服务器,这就对服务器的硬件处理数据能力提出了很高的要求。

    在C/S结构中,应用程序分为两部分:服务器部分客户机部分服务器部分是多个用户共享的信息与功能,执行后台服务,如控制共享数据库的操作等;客户机部分为用户所专有,负责执行前台功能,在出错提示、在线帮助等方面都有强大的功能,并且可以在子程序间自由切换。

(2)优点

  1. 能充分发挥客户端 PC 的处理能力,很多工作可以在 客户端处理 后再提交给服务器,所以 C/S 结构客户端响应速度快
  2. 操作界面漂亮、形式多样,可以充分满足客户自身的个性化要求
  3. C/S 结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程
  4. 安全性较高,C/S 一般面向相对固定的用户群,程序更加注重流程,它可以对权限进行多层次校验,提供了更安全的存取模式,对信息安全的控制能力很强,一般 高度机密 的信息系统 采用 C/S 结构适宜。

(3)缺点

  1. 客户端需要安装专用的客户端软件。首先涉及到安装的工作量,其次任何一台电脑出问题,如病毒、硬件损坏,都需要进行安装或维护。系统软件升级时,每一台客户机需要重新安装,其维护和升级成本非常高;
  2. 对客户端的操作系统一般也会有限制,不能够跨平台

1.2 B/S 结构

(1)简介
    B/S 结构Browser/Server浏览器/服务器模式),是 WEB 兴起后的一种 网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式 统一了客户端,将系统 功能实现的核心 部分集中到 服务器上,简化了系统的开发维护使用。客户机上只要安装一个浏览器,如 FirefoxInternet Explorer,服务器安装 SQL ServerOracleMySQL 等数据库。浏览器通过 Web Server数据库 进行 数据交互

(2)优点
    B/S 架构最大的优点是总体 拥有成本低、维护方便、 分布性强、开发简单,可以不用安装任何专门的软件就能实现在任何地方进行操作,客户端零维护,系统的扩展非常容易,只要有一台能上网的电脑就能使用

(3)缺点

  1. 通信开销大、系统和数据的安全性较难保障;
  2. 个性特点明显降低,无法实现具有个性化的功能要求;
  3. 协议一般是固定的:http/https (无法传输大数量的数据)
  4. 客户端服务器端的交互是 请求-响应模式,通常动态刷新页面,响应速度明显降低

2. MAC 地址

    网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,又称为网络适配器网络接口卡NIC。其拥有 MAC 地址,属于 OSI 模型的 第 2 层,它使得用户可以通过 电缆无线 相互连接。每一个网卡都有一个被称为 MAC 地址 的独一无二的 48 位串行号。网卡的主要功能:

  1. 数据的封装解封装
  2. 链路管理
  3. 数据编码译码
    以太网卡

    MAC 地址Media Access Control Address),直译为 媒体存取控制位址,也称为 局域网地址以太网地址物理地址硬件地址,它是一个用来确认网络设备位置的位址,由网络设备制造商生产时烧录在网卡中。在 OSI 模型中,第三层网络层负责 IP 地址第二层数据链路层则负责 MAC 位址MAC 地址 用于在网络中唯一标识一个网卡一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的 MAC 地址

    MAC 地址的长度为 48 位(6个字节),通常表示为 1216 进制数,如:00-16-EA-AE-3C-40 就是一个 MAC 地址,其中 前 3 个字节,16 进制数 00-16-EA 代表 网络硬件制造商的编号,它由IEEE(电气与电子工程师协会)分配,而 后 3 个字节,16进制数 AE-3C-40 代表 该制造商 所制造的某个 网络产品(如网卡)的系列号。只要不更改自己的 MAC 地址,MAC 地址在世界是唯一。形象地说,MAC 地址就如同身份证上的身份证号码,具有 唯一性

3. IP地址

3.1 简介

    IP 协议是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。任何厂家生产的计算机系统,只要遵守 IP 协议就可以 与因特网互连互通。各个厂家生产的网络系统和设备,如以太网分组交换网等,它们 相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为 “” )的格式不同。IP 协议实际上是一套由软件程序组成的协议软件,它把各种不同“统一转换成IP 数据报 ”格式,这种转换是因特网的一个最重要的特点,使所有各种计算机都能在因特网上实现互通,即具有“开放性”的特点。正是因为有了 IP 协议,因特网才得以迅速发展成为世界上最大的、开放的计算机通信网络。因此,IP 协议 也可以叫做“ 因特网协议 ”。

    IP 地址Internet Protocol Address)是指 互联网协议地址,又译为 网际协议地址。IP 地址是 IP协议 提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个 逻辑地址,以此来屏蔽物理地址的差异

    IP 地址是一个 32 位 的二进制数,通常被分割为 4 个“ 8 位二进制数”(也就是 4 个字节)。IP 地址通常用“ 点分十进制 ”表示成(a.b.c.d)的形式,其中,a,b,c,d 都是 0~255 之间的 十进制整数

  • 例:点分十进IP地址(100.4.5.6),实际上是 32 位二进制数(01100100.00000100.00000101.00000110)。

3.2 IP 地址编址方式

    最初设计互联网络时,为了便于寻址以及层次化构造网络,每个 IP 地址包括两个标识码(ID),即 网络ID主机 ID。同一个物理网络上的所有主机都使用同一个 网络 ID,网络上的一个主机(包括网络上工作站服务器路由器等)有一个 主机 ID 与其对应。Internet 委员会定义了 5 种 IP 地址类型以适合不
同容量的网络,即 A 类~ E 类。其中 ABC 3类(如下表格)由 InternetNIC 在全球范围内统一分配DE 类为特殊地址。
在这里插入图片描述
(1)A类IP地址
    一个 A 类 IP 地址是指, 在 IP 地址的四段号码中,第一段号码网络号码,剩下的三段号码为 本地计算机的号码。如果用二进制表示 IP 地址的话,A 类 IP 地址 就由 1 字节的网络地址3 字节主机地址 组成,网络地址的 最高位 必须是 “0”。A 类 IP 地址中网络的标识长度8 位,主机标识的长度24 位,A类网络地址数量较少,有 126 个网络每个网络可以容纳主机数达 1600 多万台。

  • A 类 IP 地址 地址范围 1.0.0.1 - 126.255.255.254(二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110)。最后一个(*.255.255.255)是广播地址
  • A 类 IP 地址子网掩码255.0.0.0每个网络支持的最大主机数为: 256 3 − 2 = 16777214 台 {256}^3 - 2 = 16777214 台 25632=16777214

(2)B类IP地址
    一个 B 类 IP 地址 是指,在 IP 地址的四段号码中,前两段号码网络号码。如果用二进制表示 IP 地址的话,B 类 IP 地址就由 2 字节的网络地址2 字节主机地址 组成,网络地址的 最高位 必须是“ 10 ”。B 类 IP地址网络的标识长度16 位,主机标识的长度16 位,B 类网络地址 适用于中等规模的网络,有 16384个网络,每个网络所能容纳的计算机数为 6 万多台

  • B 类 IP 地址 地址范围 128.0.0.1 - 191.255.255.254 (二进制表示为:10000000 00000000 00000000 00000001 - 10111111 11111111 11111111 11111110)。 最后一个(*.*.255.255)是广播地址
  • B 类 IP 地址 的子网掩码为 255.255.0.0每个网络 支持的 最大主机数 为: 256 2 − 2 = 65534 台 {256}^2 - 2 = 65534 台 25622=65534

(3)C类IP地址
    一个 C 类 IP 地址是指,在 IP 地址的四段号码中,前三段号码网络号码,剩下的一段号码为 本地计算机的号码。如果用二进制表示 IP 地址的话,C 类 IP 地址就由 3 字节的网络地址1 字节主机地址 组成,网络地址的 最高位 必须是“110”。C 类 IP 地址网络的标识长度24 位,主机标识的长度8 位,C 类网络地址数量较多,有 209 万余个网络。适用于小规模的局域网络,每个网络最多只能包含254 台计算机。

  • C 类 IP 地址 范围 192.0.0.1- 223.255.255.254 (二进制表示为: 11000000 00000000 00000000 00000001 - 11011111 11111111 11111111 11111110)。
  • C类IP地址的子网掩码为 255.255.255.0每个网络 支持的 最大主机数 为: 256 − 2 = 254 台 256 - 2 = 254 台 2562=254

(4)D类IP地址
    D 类 IP 地址 在历史上被叫做 多播地址multicast address),即 组播地址。在 以太网中,多播地址命名了一组应该在这个网络中应用接收到一个分组的站点。多播地址的 最高位 必须是 “1110”,范围从224.0.0.0 - 239.255.255.255

(5)特殊的网址
    每一个字节都为 0 的地址( “0.0.0.0” )对应于 当前主机
    IP 地址中的每一个字节都为 1 的 IP 地址( “255.255.255.255” )是 当前子网 的广播地址
    IP 地址中凡是以 “11110” 开头的 E 类 IP 地址保留 用于将来和实验使用。
    IP地址中不能以十进制 “127” 作为开头,该类地址中数字 127.0.0.1127.255.255.255 用于回路测试,如:127.0.0.1 可以代表 本机IP地址

子网掩码

  • 子网掩码subnet mask)又叫网络掩码地址掩码子网络遮罩,它是一种用来指明一个 IP 地址哪些位 标识的是 主机所在的子网,以及 哪些位 标识的是主机的 位掩码。子网掩码不能单独存在,它必须结合 IP 地址一起使用。子网掩码只有一个作用,就是将某个 IP 地址 划分成 网络地址主机地址 两部分。
  • 子网掩码是一个 32 位地址,用于屏蔽 IP 地址的一部分以区别 网络标识主机标识 ,并说明该 IP地址是在局域网上,还是在 广域网 上。

    子网掩码是在 IPv4 地址资源紧缺的背景下为了解决 lP 地址分配而产生的 虚拟 lP 技术,通过子网掩码ABC 三类地址划分为若干子网,从而显著提高了 IP 地址的分配效率,有效解决了 IP 地址资源紧张的局面。另一方面,在企业内网中为了更好地管理网络,网管人员也利用子网掩码的作用,人为地将一个较大的企业内部网络划分为更多个小规模的子网,再利用 三层交换机路由功能实现子网互联,从而有效解决了网络广播风暴和网络病毒等诸多网络管理方面的问题。

    在大多数的网络教科书中,一般都将子网掩码的作用描述为通过逻辑运算,将 IP 地址划分为网络标识(Net.ID) 和主机标识(Host.ID),只有网络标识相同的两台主机在无路由的情况下才能相互通信

    根据 RFC950 定义,子网掩码 是一个 32 位的 2 进制数, 其对应 网络地址 的所有位都置为 1,对应于 主机地址 的所有位置都为 0子网掩码 告知 路由器,地址的哪一部分是网络地址,哪一部分是主机地址使路由器正确判断任意 IP 地址是否是本网段的,从而正确地进行路由。网络上,数据从一个地方传到另外一个地方,是依靠 IP 寻址。从逻辑上来讲,是两步的。

  • 第一步,从 IP 中找到所属的网络,好比是去找这个人是哪个小区的;
  • 第二步,再从 IP 中找到主机在这个网络中的位置,好比是在小区里面找到这个人。

    子网掩码的设定必须遵循一定的规则。与二进制 IP 地址相同,子网掩码由 10 组成,且 1 0 分别连续。子网掩码的长度也是 32 位,左边是网络位,用二进制数字 “1” 表示,1 的数目等于网络位的长度;右边是主机位,用二进制数字 “0” 表示,0 的数目等于主机位的长度。这样做的目的是为了让掩码与 IP 地址做 按位与运算 时用 0 遮住原主机数,而不改变原网络段数字,而且很容易通过 0 的位数确定子网的主机数2 的主机位数次方 - 2因为主机号全为 1 时表示该网络广播地址,全为 0 时表示该网络的网络号,这是两个特殊地址)。通过子网掩码,才能表明一台主机所在的子网与其他子网的关系,使网络正常工作。

4. 端口

4.1 简介

    “端口” 是英文 port 的意译,可以认为是 设备外界通讯 交流的出口。端口可分为 虚拟端口物理端口:

  • 虚拟端口计算机内部交换机路由器内端口不可见,是特指 TCP/IP协议中的端口,是 逻辑意义 上的端口。例如计算机中的 80 端口、21 端口、23 端口等。(也可以理解为:内存缓冲区)
  • 物理端口 又称为 接口,是 可见端口,计算机背板的 RJ45 网口交换机路由器集线器RJ45 端口。电话使用 RJ11 插口也属于 物理端口 的范畴。

    如果把 IP 地址 比作一间房子,端口 就是出入这间房子的 。真正的房子只有几个门,但是一个 IP 地址的端口可以有 65536(即: 2 16 2^{16} 216)个之多!端口是通过 端口号 来标记的,端口号只有整数,范围是从 065535 2 16 − 1 2^{16} - 1 2161)。

4.2 端口类型

(1)周知端口(Well Known Ports)
    周知端口是众所周知的端口号,也叫知名端口公认端口 或者 常用端口,范围从 01023它们紧密绑定于一些特定的服务

  • 例如 80 端口分配给 WWW 服务,21 端口分配给 FTP 服务,23 端口分配给 Telnet 服务等等。
  • 我们在 IE 的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况WWW 服务的端口是 “80”。

    网络服务 是可以使用其他端口号的,如果不是默认的端口号则应该在地址栏上指定端口号,方法是在地址后面加上冒号: ”(半角),再加上 端口号。比如使用 “8080” 作为 WWW 服务的端口,则需要在地址栏里输入“网址:8080”。但是有些系统协议使用固定的端口号,它是不能被改变的,比如 139 端口专门用于 NetBIOSTCP/IP 之间的通信,不能手动改变。

(2)注册端口(Registered Ports)
    端口号102449151,它们松散地绑定于一些服务,分配给 用户进程应用程序,这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端 动态选用为源端口

(3)动态端口 / 私有端口(Dynamic Ports / Private Ports)
    动态端口 的范围是从 4915265535。之所以称为 动态端口,是因为它 一般不固定分配某种服务,而是动态分配

5. 网络模型

5.1 OSI 七层参考模型

    七层模型,亦称 OSIOpen System Interconnection)参考模型,即 开放式系统互联。参考模型是 国际标准化组织ISO)制定的一个用于 计算机通信系统间互联标准体系,一般称为 OSI 参考模型七层模型。它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。

在这里插入图片描述

记忆物数网传会表应

  1. 应用层网络服务最终用户一个接口 。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。
  2. 表示层:数据的表示安全压缩。主要是进行对接收的数据进行解释、加密与解密、压缩与解压缩等(也就是把计算机能够识别的东西转换成人能够能识别的东西(如图片、声音等))。
  3. 会话层:通过传输层(端口号传输端口接收端口建立数据传输的通路。主要在你的系统之间 发起会话 或者 接受会话请求
  4. 传输层:定义了一些传输数据的 协议端口号WWW 端口 80 等),如:TCP传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP用户数据报协议,与 TCP 特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如 QQ 聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行 分段传输,到达目的地址后再进行 重组。常常把这一层数据叫做
  5. 网络层:进行 逻辑地址寻址,在位于不同地理位置的网络中的两个主机系统之间 提供连接路径选择。Internet 的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
  6. 数据链路层建立逻辑连接、进行 硬件地址寻址差错校验 等功能。定义了如何让 格式化数据 为单位进行传输,以及如何让控制对物理介质的访问。网卡将 比特 组合成 字节 进而组合成 ,用MAC地址访问介质。
  7. 物理层:主要定义 物理设备标准,如网线的接口类型光纤的接口类型各种传输介质的传输速率等。它的主要作用是传输比特流(就是由10 转化为 电流强弱 来进行传输,到达目的地后再转化为10,也就是我们常说的 数模转换模数转换)。这一层的数据叫做 比特

5.2 TCP/IP 四层模型

简介
    现在 Internet(因特网)使用的主流协议族是 TCP/IP 协议族,它是一个分层多协议的通信体系。 TCP/IP协议族 是一个 四层协议系统自底而上 分别是 数据链路层网络层传输层应用层。每一层完成不同的功能,且通过若干协议来实现,上层协议 使用 下层协议提供的服务

在这里插入图片描述
    TCP/IP 协议 在一定程度上参考了 OSI 的体系结构。OSI 模型共有七层,从下到上分别是 物理层数据链路层网络层传输层会话层表示层应用层。但是这显然是有些复杂的,所以在 TCP/IP 协议中,它们被简化为了四个层次
(1)应用层表示层会话层 三个层次提供的服务相差不是很大,所以在 TCP/IP 协议中,它们被合并为 应用层 一个层次。
(2)由于 传输层网络层 在网络协议中的地位十分重要,所以在 TCP/IP 协议中它们被作为独立的两个层次。
(3)因为 数据链路层物理层 的内容相差不多,所以在 TCP/IP 协议中它们被归并在 网络接口层 / 数据链路层 一个层次里。只有四层体系结构的 TCP/IP 协议,与有七层体系结构的 OSI 相比要简单了不少,也正是这样,TCP/IP 协议在实际的应用中效率更高,成本更低

在这里插入图片描述

  1. 应用层:应用层是 TCP/IP 协议的第一层,是直接为应用进程提供服务的。
    (1)对不同种类的应用程序它们会根据自己的需要来使用应用层的不同协议,邮件传输 应用使用了 SMTP 协议、万维网 应用使用了 HTTP 协议、远程登录服务 应用使用了有 TELNET 协议。
    (2)应用层还能 加密解密格式化数据
    (3)应用层可以 建立解除其他节点的联系,这样可以充分节省网络资源。
  2. 传输层:作为 TCP/IP 协议的第二层,运输层在整个 TCP/IP 协议中起到了中流砥柱的作用。且在运输层中, TCPUDP 也同样起到了 中流砥柱 的作用。
  3. 网络层:网络层在 TCP/IP 协议中的位于第三层。在 TCP/IP 协议中网络层可以进行 网络连接的建立 和 终止 以及 IP 地址的寻找 等功能。
  4. 网络接口层:在 TCP/IP 协议中,网络接口层位于第四层。由于网络接口层兼并了 物理层数据链路层 所以,网络接口层既是传输数据的物理媒介,也可以为网络层提供一条准确无误的线路

6. 协议

6.1 简介

    协议网络协议 的简称,网络协议是通信计算机双方必须 共同遵从的一组约定。如怎么样建立连接怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。它的三要素是:语法语义时序

    为了使数据在网络上从源到达目的,网络通信的参与方必须 遵循相同的规则,这套规则称为 协议protocol),它最终体现为在网络上传输的 数据包的格式。协议往往分成几个层次进行定义,分层定义是为了使某一层协议的改变不影响其他层次的协议。

6.2 常见协议

    应用层 常见的协议有:FTP协议(File Transfer Protocol 文件传输协议)、HTTP 协议(Hyper Text Transfer Protocol 超文本传输协议)、NFSNetwork 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 地址解析协议)(ip -> mac)、RARP协议(Reverse Address Resolution Protocol 反向地址解析协议)(mac -> ip)。

6.3 UDP 协议

在这里插入图片描述

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

6.4 TCP 协议

在这里插入图片描述

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

6.5 IP 协议

在这里插入图片描述

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

6.6 以太网帧协议

在这里插入图片描述

  • 类型:使 目的主机数据链路层 知道应将数据部分 上交给哪个处理0x800 表示 IP0x806 表示 ARP0x835 表示 RARP

6.7 ARP 协议

  • ARP协议:通过 IP 地址查找 MAC 地址;
  • RARP协议:通过 MAC 地址查找 IP 地址;

在这里插入图片描述

  1. 硬件类型1 表示 MAC 地址
  2. 协议类型0x800 表示 IP 地址
  3. 硬件地址长度6 字节
  4. 协议地址长度4字节(ip)
  5. 操作1 表示 ARP 请求2 表示 ARP 应答3 表示 RARP 请求4 表示 RARP 应答

在这里插入图片描述

例如:在win 的 cmd 输入: arp -a

在这里插入图片描述

6.8 封装

    上层协议如何使用 下层协议提供的服务的呢?

  • 其实这是通过封装encapsulation)实现的。应用程序数据在发送到物理网络上之前,将沿着 协议栈 从上往下 依次传递。每层协议都将在上层数据的基础上加上自己的头部信息(有时还包括尾部信息),以实现该层的功能,这个过程就称为封装
    在这里插入图片描述

6.9 分用 / 解封装

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

在这里插入图片描述
在这里插入图片描述

7. 网络通信的过程

    举例:QQ 聊天,发送:nihao

在这里插入图片描述

注:仅供学习参考,如有不足,欢迎指正!

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

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

相关文章

时产20吨成套饲料生产线设备;一键式操作省时省力

时产20吨成套饲料生产线设备采用钢架结构,确保了设备的稳定性和耐用性。这种结构不仅提供了强大的支撑力,还使得设备在长时间运行过程中能够保持稳定的性能。 该生产线设备由多个关键部分组成,包括原料预处理系统、粉碎系统、混合系统、制粒…

k8s-prometheus监控部署 22

新建项目仓库并上传部署prometheus所需的镜像 开始部署 修改svc访问方式为LoadBalancer 查看用户名和密码 访问grafana监控页面 http://192.168.182.103/​​​​​​ 修改可视化模板 官方监控模板:https://grafana.com/grafana/dashboards 访问prometheus监控页面…

vue2结合electron开发跨平台应用(桌面端应用)

1.确定nodejs和electron的版本号 确定nodejs和electron的版本号及其重要,因为electron的开发版本需要指定的nodejs版本支持。 本文安装测试使用的是: 1.node18.19.0 2.npm10.2.3 3.vue-cli5.0.8 4.electron29.0.0 2.创建vue2项目 vue create elctron29.0.0_no…

【MySQL】:约束全解析

🎥 屿小夏 : 个人主页 🔥个人专栏 : MySQL从入门到进阶 🌄 莫道桑榆晚,为霞尚满天! 文章目录 📑前言一. 约束概述二. 约束演示三. 外键约束3.1 介绍3.2 语法3.3 删除/更新行为 &…

2024最新EasyRecovery数据恢复软件的优点介绍

EasyRecovery数据恢复软件的优点主要包括: 强大的恢复能力:EasyRecovery采用先进的深度扫描技术,能够恢复因误删除、格式化、分区丢失或损坏等多种原因丢失的数据。它支持从各种存储设备中恢复数据,包括硬盘、U盘、SD卡等。广泛的…

MyBatisPlus(SpringBoot版)的分页插件

目录 一、前置工作: 1.整体项目目录结构 2.创建普通javamaven项目。 3.导入依赖,改造成springboot项目 4.配置启动类 5.创建service接口及其实现类 6.创建接口Mapper 7.配置数据源 8.创建数据库表 二、使用MP(mybatisplus)的分页插件 二、使…

上限和下限之间的随机值

实验结果; 上限和下限之间的随机值 第一步:新建项目 第二步:找到相应的部件 第三步:实验结果验证

【C++】STL学习之旅——初识STL,认识string类

string类 1 STL 简介2 STL怎么学习3 STL缺陷4 string4.1 初识 string4.2 初步使用构造函数成员函数 5 小试牛刀Thanks♪(・ω・)ノ谢谢阅读!!!下一篇文章见!!! 1 STL 简介 …

【深度学习笔记】计算机视觉——目标检测和边界框

目标检测和边界框 前面的章节(例如 sec_alexnet— sec_googlenet)介绍了各种图像分类模型。 在图像分类任务中,我们假设图像中只有一个主要物体对象,我们只关注如何识别其类别。 然而,很多时候图像里有多个我们感兴趣…

故障诊断 | 一文解决,XGBoost极限梯度提升树的故障诊断(Matlab)

效果一览 文章概述 故障诊断 | 一文解决,XGBoost极限梯度提升树的故障诊断(Matlab) 模型描述 XGBoost通过集成多个决策树来建立一个强大的预测模型。它采用了一种特殊的梯度提升技术,称为极限梯度提升(Extreme Gradient Boosting),以提高模型的性能和鲁棒性。 极限梯度…

Pygame教程01:初识pygame游戏模块

Pygame是一个用于创建基本的2D游戏和图形应用程序。它提供了一套丰富的工具,让开发者能够轻松地创建游戏和其他图形应用程序。Pygame 支持许多功能,包括图像和声音处理、事件处理、碰撞检测、字体渲染等。 Pygame 是在 SDL(Simple DirectMed…

进制的转化

#include <bits/stdc.h> using namespace std; typedef long long ll;int main(){char ch[]{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F};int n, m; // 记录进制的数cin >> n; // 原数的进制string str;cin >> str;string ans;vector<int> st(str.size()); // 存…

ES向量功能实战:向量搜索

1 缘起 项目需要&#xff0c;向量搜索使用ES&#xff0c;为了顺利使项目顺利交付&#xff0c;开始学习ES的稠密向量功能&#xff0c;本文即ES向量的实践&#xff1a;增删查改。ES从7.x版本支持向量功能&#xff0c;为测试ES向量功能&#xff0c;需要使用7.x及以上的版本。本文…

【Java基础系列】时间戳

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

05-Linux部署MySQL

Linux部署MySQL 在今后的使用过程中&#xff0c;需要频繁使用Linux系统&#xff0c;所以在Linux上安装软是必不可少的操作 。 前置要求 需要学习前四章知识&#xff0c;初识Linux、Linux基础命令、Linux权限管理、Linux高阶技巧这4个章节。需要开启多态虚拟机&#xff0c;电…

运筹学_1.3 单纯形法的原理

1.3 单纯形法的原理 一、构造初始可行基二、得到初始基可行解三、最优性检验&#xff08;解的判别定理&#xff09;四、基变换&#xff08;确定主元及主元列&#xff09;1、确定换入变量2、确定换出变量 五、迭代运算(矩阵的初等行变换) 一、构造初始可行基 构造初始可行基的方…

基于springboot+vue的校园商铺管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

day09_商品管理订单管理SpringTaskEcharts

文章目录 1 商品管理1.1 添加功能1.1.1 需求说明1.1.2 核心概念SPUSKU 1.1.3 加载品牌数据CategoryBrandControllerCategoryBrandServiceCategoryBrandMapperCategoryBrandMapper.xml 1.1.4 加载商品单元数据ProductUnitProductUnitControllerProductUnitServiceProductUnitMap…

python并发 map函数的妙用

1.map是什么&#xff1f; map函数是Python中的一个内置函数&#xff0c;用于将一个函数应用到一个或多个可迭代对象的每个元素上&#xff0c;生成一个新的可迭代对象。它的一般形式是&#xff1a; map(function, iterable1, iterable2, ...)其中&#xff0c;function是一个函…

c++之旅——第三弹

大家好啊&#xff0c;这里是c之旅第三弹&#xff0c;跟随我的步伐来开始这一篇的学习吧&#xff01; 如果有知识性错误&#xff0c;欢迎各位指正&#xff01;&#xff01;一起加油&#xff01;&#xff01; 创作不易&#xff0c;希望大家多多支持哦&#xff01; 一.命名空间;…