网络分层模型及协议简介

2023-11-10

1.OSI七层模型和TCP/IP四层模型

在这里插入图片描述
  从应用程序的角度出发,主要掌握TCP/IP模型。
  OSI七层模型:物数网传会表应
  (1)物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特
  (2)数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物理介质的访问。这一层通常还提供错误检测和纠正,以确保数据的可靠传输。如:串口通信中使用到的115200、8、N、1。
  (3)网络层:在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户数大大增加,而网络层正是管理这种连接的层。
  (4)传输层:定义了一些传输数据的协议和端口号(WWW端口80等),如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)。 主要是将从下层接收的数据进行分段和传输,到达目的地址后再进行重组。常常把这一层数据叫做
  (5)会话层:通过传输层(端口号:传输端口与接收端口)建立数据传输的通路。主要在你的系统之间发起会话或者接受会话请求(设备之间需要互相认识可以是IP也可以是MAC或者是主机名)。
  (6)表示层:可确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取。例如,PC程序与另一台计算机进行通信,其中一台计算机使用扩展二一十进制交换码(EBCDIC),而另一台则使用美国信息交换标准码(ASCII)来表示相同的字符。如有必要,表示层会通过使用一种通格式来实现多种数据格式之间的转换。
  (7)应用层:是最靠近用户的OSI层。这一层为用户的应用程序(例如电子邮件、文件传输和终端仿真)提供网络服务。

2.通信过程

  两台计算机通过TCP/IP协议通讯的过程如下所示:
在这里插入图片描述
  当用户A要通过网络给用户B发送消息(数据)时,必须先进行逐层封装,才能进行发送。假如有数据Data,则用户A必须对数据段依次封装应用层协议,传输层协议,网络层协议,最后封装链路层(头和尾),这样封装过的数据才能正常的通过网络进行传输。当然,当用户B接收到消息时,需要对接收到的数据一层一层的去掉,得到数据Data。

3. 数据包的封装过程

  传输层及其以下的机制由内核提供,应用层由用户进程提供(后面将介绍如何使用socket API编写应用程序),应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示:
在这里插入图片描述
  不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

4.路由器寻路一般思想

  数据报在通信过程中的处理,经过路由器的时候会进行半解包,再打包,如此循环,直到最后达到端B进行数据报全解包取出数据报中封装的数据。
  半解包是去掉以太网帧和网络层,根据目的IP(目的IP封装在IP段(网络层)中),通过路由器的路由表(每个路由结点都有一个路由表,记录路由节点信息,如与之相连的路由器等)进行寻路。
  其中,源路由和目的路由建立通信的过程中,要用到ARP协议,来获取目的路由的MAC地址,从而建立起通信。
  总之,整个数据报的传输过程就是一个一步一步往前摸索的方式。
  Note:TCP进行一次寻路,之后的数据报就会顺着之前的路进行传输;而UDP每次传输数据报都需要进行寻路。因此相比而言,TCP更加稳定。
在这里插入图片描述
  Note1:对于上图的说明,当封装好的数据包在网络中传输需要进行路由寻路(可能会经历N个路由器)时,均要进行半解包(即,只去掉以太网帧头、帧尾以及IP段段头),从而根据ARP协议及下一跳路由器的MAC地址,从而与下一跳路由器建立通信,完成数据传输。
  Note2:对于以上去掉以太网帧头、帧尾、IP段段头的具体说明,①先去掉以太网帧头、帧尾,可以得到IP数据段,利用ARP协议,进行ARP请求,获得下一跳路由的MAC地址;② 再去掉IP数据段段头,可以得到IP段的数据,即目的IP地址,以判断是否已经寻路结束,达到目的IP。
  Note3:源端到目的端的传输最长生命周期为TTL,单位为1跳。
  原因:因为数据报在网络中传输的过程中,可以会因为网络断开的问题,使得数据报在路由器之间不断的循环,从而导致网络拥塞。这时,设置TTL就可以避免这种问题出现,如果数据报在路由器之间的跳数达到上限(也即TTL),就将此数据报丢弃
  关于TTL举个例子:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)。

5.以太网帧格式(网络接口层)

以太网帧格式如下所示:
在这里插入图片描述
  其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位,是在网卡出厂时固化的。可在shell中使用ifconfig命令查看,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。协议字段有三种值,分别对应IP、ARP、RARP。帧尾是CRC校验码。
  以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位(PAD)。最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU,则需要对数据包进行分片(fragmentation)。ifconfig命令输出中也有“MTU:1500”。注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧头长度。

  Note1:所谓MAC地址也就是网卡的编号,对于每台电脑来说是唯一的标识。
  Note2:ARP协议报中的18字节是为了填充,没有实际意义。因为IP数据报的最小字节数为46。
  Note3:以太网帧格式是整个数据报封装的最外层。

6.ARP协议报格式

  本质:ARP协议主要是获取下一跳数据报要投递的路由的MAC地址。
   作用:主要为以太网帧获取需要的目的MAC地址。
   在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符,则直接丢弃。因此在通讯前必须获得目的主机的硬件地址。ARP协议就起到这个作用。源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”,并将这个请求广播到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播),目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给源主机,将自己的硬件地址填写在应答包中。
   每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。
   ARP数据报的格式如下所示:
在这里插入图片描述

7.IP段格式(网络层)

在这里插入图片描述
   4位版本号记录IPV4或者IPV6;4位首部长度记录首部长度;8位生存时间(TTL,Time to live)记录能够经过的最大跳数,2 8 ^8 8=256跳。还有存32位(4字节)的源IP地址,32位(4字节)的目的IP地址。
  IP地址如192.168.24.54为点分十进制形式,即字符串。在程序中不能用这种方式传输,要转换为数值类型(unsigned int)。
   Note1:IP段格式相对于以太网帧来说,就是以太网帧的数据部分。
   原因:数据的封装从里面到外面的顺序是 应用层,传输层,网络层,网络接口层。
  Note2:IP段首部中的32位源IP地址和32位的目的IP地址分别是数据报起始IP和数据报的终止IP。

8.UDP数据报(传输层)

在这里插入图片描述
备注:IP地址是为了正确寻找到目的端,而端口号的为了能够正确寻找到目的端的相应进程。

9.TCP数据报(传输层)

在这里插入图片描述
  与UDP协议一样也有源端口号和目的端口号,通讯的双方由IP地址和端口号标识。32位序号、32位确认序号、窗口大小稍后详细解释。4位首部长度和IP协议头类似,表示TCP协议头的长度,以4字节为单位,因此TCP协议头最长可以是4x15=60字节,如果没有选项字段,TCP协议头最短20字节。URG、ACK、PSH、RST、SYN、FIN是六个控制位,本节稍后将解释SYN、ACK、FIN、RST四个位,其它位的解释从略。

10.NAT映射

  所谓NAT映射,也就是与终端连接的路由器中有一个NAT映射表用来记录与路由器连接的各终端的IP映射信息,从而实现通过映射后的IP地址与服务器或者其他终端的通信。
  Note1:路由器中不仅存在路由表,还有NAT映射表记录当前所有连接到该路由器的局域IP地址和公网IP地址的对应关系
  Note2:192.168. . 为局域网IP,在公网中是不可见的。
  Note3:路由器对于外网来说只有一个公有IP,对于连接在路由器上的各终端来说有n个私有IP。
  Note4:因为私有IP在公网中是不可见的,所以才需要NAT映射机制将私有IP与公网IP之间建立映射关系,从而达到与公网IP通信的目的。

11.打洞机制

  中间服务器为两端的客户端建立一条通道,使得两个客户端能够进行通信。目的是为了提高客户端之间数据传输的效率。

12.总结

  公网IP–公网IP:直接访问
  公网IP–私网IP:NAT映射
  私网IP–公网IP:NAT映射
  私网IP–私网IP:NAT映射和打洞机制
  局域网中的私网IP–私网IP:直接访问

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络分层模型及协议简介 的相关文章

  • http协议访问网址的流程

    http协议 http协议可以说是由三个部分组成的 超文本 URL Http 超文本 网页中的信息 如文字 图片 视频 URL 统一资源定位符 由三个部分组成 协议 主机端口 文件名及路径 使用http协议的访问流程 例如我们想访问百度 则
  • window下apache安装和配置

    下载 32位 http httpd apache org 64位 http www apachelounge com download 安装 解压Apache2 4到F Apache2 4 修改文件F Apache2 4 conf http
  • 网络编程之channel

    介绍 Channel 是一个对象 可以通过它读取和写入数据 拿 NIO 与原来的 I O 做个比较 通道就像是流 所有数据都通过 Buffer 对象来处理 您永远不会将字节直接写入通道中 相反 您是将数据写入包含一个或者多个字节的缓冲区 同
  • Connect函数阻塞

    1 采用select 在学习嵌入式Linux网络编程中 很多同学都发现了一个问题 那就是调用connect函数时 如果服务端关闭 客户 端调用connect 函数时 发现阻塞在那里 而且利用ctrl c信号去停止客户端程序时 需要等待一个较
  • URL中的+,空格,/,?,%,#,&,= 及转义处理

    URL出现了有 空格 等特殊符号的时候 可能在服务器端无法获得正确的参数值 如何是好 解决办法 将这些字符转化成服务器可以识别的字符 对应关系如下 URL中的特殊字符 有些符号在URL中是不能直接传递的 如果要在URL中传递这些特殊符号 那
  • 【Python爬虫与数据分析】爬虫Json数据解析

    目录 一 Json文件数据解析 二 Json数据包解析获取图片资源 三 Json数据包解析获取视频资源 一 Json文件数据解析 json字符串 通常类似python数据类型中的列表和字典的结合 也可能是单独的列表或者字典格式 通常可以通过
  • select 模型解释

    套接字模式 阻塞套接字和非阻塞套接字 或者叫同步套接字和异步套接字 套接字模型 描述如何对套接字的I O行为进行管理 Winsock提供的I O模型一共有五种 select WSAAsyncSelect WSAEventSelect Ove
  • gethostbyname()函数详解

    基本概念 gethostbyname 函数主要作用 用域名或者主机名获取地址 操作系统提供的库函数 以下的讨论基于linux环境 域名系统 Domain Name System DNS 主要用于主机名字与IP地址之间的映射 每个组织机构往往
  • 三次握手、四次挥手的理解

    下面是个人对三次握手和四次挥手的理解 1 三次握手 第一次握手 客户端向服务器发起连接请求 此时要确认客户端能不能发 第二次握手 服务器收到客户端的连接请求后 会给一个应答 以及请求连接的数据包 意味着服务器收到了客户端连接的请求 以此证明
  • C# 序列化与反序列化几种格式的转换

    这里介绍了几种方式之间的序列化与反序列化之间的转换 首先介绍的如何序列化 将object对象序列化常见的两种方式即string和xml对象 第一种将object转换为string对象 这种比较简单没有什么可谈的 public string
  • TFTP协议下载实验

    include
  • TCP/IP编程之SO_REUSEADDR和SO_REUSEPORT套接字选项

    基本概念 SO REUSEADDR套接字选项能起到以下4个不同的功用 1 SO REUSEADDR允许启动一个监听服务器并捆绑众所周知端口 即使以前建立的该端口用作它们的本地端口的连接仍存在 这个条件通常是这样碰到的 a 启动一个监听服务器
  • Linux I/O多路复用——poll模型实现服务端Socket通信

    目录 poll函数 参数说明 events相关 与select的不同 程序流程 程序实例 poll函数 poll模型在实现服务端时思路是和select类似的 可以说poll是select的加强版 poll函数原型如下 int poll st
  • 2_C/S模型编程示例1

    本文主要参考C语言中文网和linux网络编程 网络基础 socket编程 高并发服务器 1 网络程序设计模式 1 1 CS模式 客户机 client 服务器 server 模式 需要在通讯两端各自部署客户机和服务器来完成数据通信 1 本地可
  • 【网络编程】协议定制+Json序列化与反序列化

    需要云服务器等云产品来学习Linux的同学可以移步 gt 腾讯云 lt gt 阿里云 lt gt 华为云 lt 官网 轻量型云服务器低至112元 年 新用户首次下单享超低折扣 目录 一 序列化与反序列化的概念 二 自定义协议设计一个网络计算
  • Muduo库源码剖析(十)——总结

    Muduo网络库的核心代码模块 Channel 封装fd的对应事件变化情况 和关注事件 fd events revents callbacks 两种channel listenfd acceptorChannel connfd connec
  • 程序猿眼中的协议:TCP / IP 五层网络模型

    哈喽 大家好 我是你们的老朋友 保护小周 本期为大家带来的是 网络基础原理中的 TCP IP 五层网络模型 主要从协议的概念 网络模型 数据分层传输的流程 几个方面讲解 看完之后可以轻松的理解数据是如何在网络中传输的 确定不来看看嘛 更多精
  • C++知识分享: Socket 编程详解,万字长文

    介绍 Socket编程让你沮丧吗 从man pages中很难得到有用的信息吗 你想跟上时代去编Internet相关的程序 但是为你在调用 connect 前的bind 的结构而不知所措 等等 好在我已经将这些事完成了 我将和所有人共享我的知
  • Node.js开发入门—HTTP文件服务器

    HelloWorld示例只有演示意义 这次我们来搞一个实际的例子 文件服务器 我们使用Node js创建一个HTTP协议的文件服务器 你可以使用浏览器或其它下载工具到文件服务器上下载文件 用Node js实现的HTTP文件服务器 比我在Qt
  • 使用epoll时需要将socket设为非阻塞吗?

    本文是回答一位知友的提问 在APUE中介绍select和poll中说 一个描述阻塞与否并不影响select是否阻塞 也就是说 如果希望读一个非阻塞描述符 并且以超时值5s调用select 则select最多阻塞5s 我看到有些程序使用epo

随机推荐

  • Docker容器安装启动以及基本指令

    Docker使用步骤 一 ubuntu安装Docker 更新ubuntu的apt源索引 sudo apt get update 安装包允许apt通过HTTPS使用仓库 sudo apt get install apt transport h
  • 《零基础入门学习python》学习过程(四)

    学习时间 2017 09 19 第14课 元组 知识点汇总 元组和列表最本质的区别就是元组是封闭的列表 它一旦定义就不可修改 不可插入或删除任意一个元素等操作 创建和访问一个元组 gt gt gt tuple2 创建一个空元组 gt gt
  • vue里的$attrs

    attrs官网介绍 关于 attrs vue官网如是介绍 包含了父作用域中不作为 prop 被识别 且获取 的特性绑定 class 和 style 除外 当一个组件没有声明任何 prop时 这里会包含所有父作用域的绑定 class 和 st
  • CSS transform变换(一)

    1 transiate x y 设置盒子位移
  • Vue 中既可以输入也可以下拉选择(改进版)

    项目场景 项目场景 由于前些天 弄了一个下拉选择 也可以输入的 input输入框 但我感觉效果并不是很优美 所以今天对以前的代码 改进并进行优化 达到一个完美的效果 代码CV就可以用前提是你得将数据参数改为你的 问题描述 昨天的代码 参照网
  • Decode函数的语法

    Decode函数的语法结构如下 decode expression search 1 result 1 decode expression search 1 result 1 search 2 result 2 decode express
  • LSH(Locality Sensitive Hashing)原理与实现

    LSH Locality Sensitive Hashing 翻译成中文 叫做 局部敏感哈希 它是一种针对海量高维数据的快速最近邻查找算法 在信息检索 数据挖掘以及推荐系统等应用中 我们经常会遇到的一个问题就是面临着海量的高维数据 查找最近
  • Linux下防火墙开启外网端口

    1 查看所有开启的端口 firewall cmd list ports 2 开启5000端口 firewall cmd zone public add port 5000 tcp permanent 3 重启防火墙 使其生效 firewal
  • EXCEL-VBA:递归遍历文件夹及子文件夹中的文件

    Const SearchPath D PDF Dim DicList FileList I FileName FilePath Set DicList CreateObject Scripting Dictionary Set FileLi
  • matlab对正弦信号作FFT得到频谱图

    转自 https www cnblogs com alexanderkun p 4723577 html https blog csdn net qq 36024066 article details 89491650 一 FFT物理意义如
  • 大小限制_GEE学习笔记 九十五:请求大小限制

    这里说一个导出数据可能会遇到的问题 当然这个问题不仅仅可能会出现在数据导出 在其他涉及到网络通信的操作都有可能会出现这个问题 1 分析错误 首先先看一下报错的内容 如下图 分析一下报错的内容 消息请求 payload 的大小超过了大小限制
  • UE4 GamePlay框架个人整理——游戏信息

    摘自 UE4官方文档 接在UE4框架类关系之后 游戏信息 两个主要类负责处理进行中游戏的相关信息 Game Mode 和 Game State GameMode 任务是定义和实现游戏规则 用于表示一个游戏的玩法逻辑 如 类似英雄联盟中推掉最
  • 2022苹果开发者账号注册流程详解(公司账号)

    公司开发者账号注册流程详解 一 注册公司账号前需要提供的信息 1 邮箱 邮箱密码 2 微信或支付宝或储蓄卡或者信用卡 原来是必须有需要带国际支付能力银行卡 visa银行卡 实际上是转账到国外的苹果银行卡账号 3 一个手机号 4 D U N
  • 如何有效实现应用系统的增删改查功能

    如何有效实现应用系统的增删改查功能 1 前言 针对数据的增加 修改 删除和查询是应用软件系统中最为常用的功能 作为软件开发人员 如何高效的实现上述功能 并且能够保证系统数据的正确性 规范性和有效性是非常重要的 本文结合自己在项目实践中完成的
  • 【1day】复现深信服数据中心管理系统 XXE漏洞——可读取文件

    目录 一 漏洞描述 二 影响版本 三 资产测绘 四 漏洞复现 一 漏洞描述 深信服的数据中心管理系统DC是一种外置的AC 异地扩展备份管理 数据中心 它提供了强大的功能和灵活性 旨在满足日志数据处理的需求 该系统具备多种高级功能 包括多条件
  • 5. 垃圾收集器G1&ZGC详解

    JVM性能调优 1 G1收集器 XX UseG1GC 1 1 G1垃圾收集分类 1 1 1 YoungGC 1 1 2 MixedGC 1 1 3 Full GC 1 2 G1收集器参数设置 1 3 G1垃圾收集器优化建议 1 4 什么场景
  • C++中string类对象占多少个字节?

    不管string的内容多少 或者不赋值 大小都是28个字节 但是G 编译是4个字节 string的实现在各库中可能有所不同 但是在同一库中相同一点是 无论你的string 里放多长的字符串 它的sizeof 都是固定的 字符串所占的空间是从
  • 【Yarn】YARN 核心设计 yarn 核心 service 是如何运行的

    文章目录 1 概述 2 案例 2 1 service 2 2 状态类 2 3 抽象类 2 4 组合service 2 5 组合service 2 6 ResourceManager 1 概述 上一篇文章 Yarn Yarn NodeMana
  • CompletableFuture取多个任务结果

    public class DemoTest Test public void test long start System currentTimeMillis CompletableFuture
  • 网络分层模型及协议简介

    1 OSI七层模型和TCP IP四层模型 从应用程序的角度出发 主要掌握TCP IP模型 OSI七层模型 物数网传会表应 1 物理层 主要定义物理设备标准 如网线的接口类型 光纤的接口类型 各种传输介质的传输速率等 它的主要作用是传输比特流