原文链接:https://blog.csdn.net/qq_28090573/article/details/89351234

一、网络七层模型
1、OSI的来源
OSI(Open System Interconnect),即开放式系统互联。 一般都叫OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互连模型。

    ISO为了更好的使网络应用更为普及,推出了OSI参考模型。其含义就是推荐所有公司使用这个规范来控制网络。这样所有公司都有相同的规范,就能互联了。

2、OSI七层模型的划分
OSI定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层、应用层),即ISO开放互连系统参考模型。如下图。

    每一层实现各自的功能和协议,并完成与相邻层的接口通信。OSI的服务定义详细说明了各层所提供的服务。某一层的服务就是该层及其下各层的一种能力,它通过接口提供给更高一层。各层所提供的服务与这些服务是怎么实现的无关。

上一张详尽图:

3、各层功能定义
这里我们只对OSI各层进行功能上的大概阐述,不详细深究,因为每一层实际都是一个复杂的层。后面我也会根据个人方向展开部分层的深入学习。这里我们就大概了解一下。我们从最顶层——应用层 开始介绍。整个过程以公司A和公司B的一次商业报价单发送为例子进行讲解。

<1> 应用层

    OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等。

<2> 表示层

    表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。由于公司A和公司B是不同国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表示层(公司的文秘),就是将应用层的传递信息转翻译成英语。同时为了防止别的公司看到,公司A的人也会对这份报价单做一些加密的处理。这就是表示的作用,将应用层的数据转换翻译等。

<3> 会话层

    会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。      会话层的同事拿到表示层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他好多公司的联系方式,这里公司就是实际传递过程中的实体。他们要管理本公司与外界好多公司的联系会话。当接收到表示层的数据后,会话层将会建立并记录本次会话,他首先要找到公司B的地址信息,然后将整份资料放进信封,并写上地址和联系方式。准备将资料寄出。等到确定公司B接收到此份报价单后,此次会话就算结束了,外联部的同事就会终止此次会话。

<4> 传输层

    传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。传输层就相当于公司中的负责快递邮件收发的人,公司自己的投递员,他们负责将上一层的要寄出的资料投递到快递公司或邮局。

<5> 网络层

   本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。网络层就相当于快递公司庞大的快递网络,全国不同的集散中心,比如说,从深圳发往北京的顺丰快递(陆运为例啊,空运好像直接就飞到北京了),首先要到顺丰的深圳集散中心,从深圳集散中心再送到武汉集散中心,从武汉集散中心再寄到北京顺义集散中心。这个每个集散中心,就相当于网络中的一个IP节点。

<6> 数据链路层

    将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。MAC子层处理CSMA/CD算法、数据出错校验、成帧等;LLC子层定义了一些字段使上次协议能共享数据链路层。 在实际使用中,LLC子层并非必需的。这个没找到合适的例子

<7> 物理层

    实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。快递寄送过程中的交通工具,就相当于我们的物理层,例如汽车,火车,飞机,船。

4、通信特点:对等通信
对等通信,为了使数据分组从源传送到目的地,源端OSI模型的每一层都必须与目的端的对等层进行通信,这种通信方式称为对等层通信。在每一层通信过程中,使用本层自己协议进行通信。

5、TCP/IP五层模型
TCP/IP五层协议和OSI的七层协议对应关系如下。

在每一层都工作着不同的设备,比如我们常用的交换机就工作在数据链路层的,一般的路由器是工作在网络层的。

在每一层实现的协议也各不同,即每一层的服务也不同.下图列出了每层主要的协议。其中每层中具体的协议,我会在后面的逐一学习。

      到目前为止,大致的了解了应用程序和tcpip协议的大致关系,我们只是知道socket编程是在tcp/IP上的网络编程,但是socket在上述的模型的什么位置呢。这个位置被一个天才的理论家或者是抽象的计算机大神提出并且安排出来

      我们可以发现socket就在应用程序的传输层和应用层之间,设计了一个socket抽象层,传输层的底一层的服务提供给socket抽象层,socket抽象层再提供给应用层,socket和进程间通讯扩展图:

socket是什么

socket的引入是为了解决不同计算机间进程间通信的问题。
socket 是网络编程中的概念,对TCP/IP协议进行了抽象和实现,并为应用层提供接口。这里的应用A,可以是FTP应用,它属于用户进程,通过socket与内核中的网络协议栈进行交互。
socket 是核心,是枢纽,是进程与网络建立关系的必经之路!
socket 是核心,是枢纽,是进程与网络建立关系的必经之路!

1.内核是如何将数据包转发至 socket 的呢?
网络数据首先到达网卡,然后进入内核,由网络协议栈去处理,那么内核是如何进行数据分发的呢?它怎么知道该如何把数据交给特定的用户进程呢?
这时,就需要 socket 发挥作用了!
socket 中存储了特定的四元组: 源ip+port,目的ip+port;

1> bind 到特定 ip 和 port 的socket 对应 [src ip, src port) <=> (*, *)] ;
2> connect 到特定目的ip+port 的 socket 对应 [src ip, src port) <=> (dst ip, dst port)];
3> accept 返回了的 socket 对应 [src ip, src port) <=> (dst ip, dst port)];
那么内核根据数据包的四元组信息,就可以锁定特定的socket了。并可,系统中所有 socket 中的四元组信息,必定唯一,不可能重复!

2 进程与socket的关系是怎样的呢?
每个进程,在内核中都有一个表,保存了该进程申请并占用的所有 socket 描述符,在进程看来,socket 其实跟文件也没有什么不同,只不过通过描述符获得的对象不同而已,接口对应的系统调用也不同。
那么进程跟socket是一一对应的吗?
其实不然,socket是一种资源,就像文件一样,一个进程打开了,另一个进程也可以用,只不过socket比较特殊而已。
理论上,能够通过 sendmsg 将 socket 描述符传递给其他进程,这样其他进程就可以调用该描述符的接口了。这种场景确实不怎么会用到,也没有进行实际验证。
当然,父子进程间,还有线程间,进行 socket 的共享,是比较常见的。

3 进程与端口
进程与端口,其实并没有什么直接或必然的关系,关键还是socket!
wireshark 抓包查看tcp协议数据包详情:

总结
socket 的本质是一种资源,它包含了端到端的四元组信息,用来标识数据包的归属。因此,尽管 tcp 协议的端口号只有 65535 个,但是进程可拥有的 socket 数据却不限于此(受限于进程最大文件描述符数据);

作者:kangomake
链接:https://www.jianshu.com/p/ed39c81d081b
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

linux网络全局 之 含网络七层模型相关推荐

  1. linux的ping命令属于OSI七层模型的哪一层?

    OSI七层模型,自顶向下为:应用.表现.会话.传输.网络.数据链路.物理这7层.常用的一些协议如http.ftp都是应用层,tcp/udp是传输层,ip是网络层,等等.到此为止,这些估计大部分人都知道 ...

  2. 网络编程(part6)--OSI七层模型及四层模型(TCP/IP)

    鄙人学习笔记 文章目录 OSI七层模型(标准) 四层模型(TCP/IP模型) 数据传输过程 网络协议 OSI七层模型(标准) ●制定组织: ISO(国际标准化组织) ●作用:使网络通信工作流程标准化 ...

  3. 计算机网络7层协议模型,计算机网络(一) OSI七层模型及TCP/IP dubbo协议

    3.TCP/IP 四层模型: TCP/IP协议:是一个网络通信模型,是OSI 七层模型的简化,为4层模型,泛指众多(TCP,UDP,IP等)协议: OSI TCP/IP 功能 协议 应用层 应用层 文 ...

  4. TCP/IP 模型 与 OSI 七层模型的对应关系

    TCP/IP 模型与 OSI 七层模型 七层有底向上分别是:物理层.数据链路层.网络层.传输层.会话层.表示层.应用层. 简化后的四层分别是:主机到网络层(比特).网络层(数据帧).传输层(数据包). ...

  5. osi七层模型每一层的含义及介绍

    osi模型OSI 代表开放系统互连.它是一个概念框架,描述了网络或电信系统的不同功能,并概述了应用程序如何通过网络进行通信.osi七层模型由七个不同的层组成,通常从上到下进行描述.按照从七到一的顺序, ...

  6. TCP/IP协议和OSI七层模型

    一.TCP/IP协议 标准TCP/IP协议是用于计算机通信的一组协议,通常被称为TCP/IP协议栈,以它为基础组建的互联网是目前国际上规模最大的计算机网络. 正因为互联网的广泛应用,使得TCP/IP成 ...

  7. Linux网络_从系统到网络(网络协议栈分层与功能,认识协议,OSI七层模型与TCPIP四层模型,网络通信流程(局域网,跨网络),MAC地址,IP地址)

    文章目录 1.网络在体系结构的位置与网络协议栈的层状结构 2.协议栈各层的功能 3.协议 4.OSI七层模型与TcpIp四层模型 5.网络通信的流程 局域网通信流程(以太网) MAC地址 跨网络通信 ...

  8. linux 网络7层模型,Linux网络编程——OSI七层模型、TCP/IP模型

    OSI七层模型 开放式系统互连(Open System Interconnect),模型分为7层,从下往上依次为: 物理层: 数据链路层: 网络层: 传输层: 会话层: 表示层: 应用层: 记不住怎么 ...

  9. 网络七层模型和对应协议的通俗理解

    文章目录 1.七层.五层.四层模型划分 2.记忆口诀 3.各层的协议 4.OSI 七层模型的通俗理解 4.1.需求1: 4.2. 需求2: 4.3.需求3: 4.4. 需求4: 4.5.需求5: 4. ...

最新文章

  1. memsql 落地mysql_MemSQL初体验 - (2)初始化测试环境
  2. oracle SQL 命令行(一.基础)
  3. 《智慧书》格言211-220
  4. 前端学习(2956):项目中组件的本地注册
  5. 三白话经典算法系列 Shell排序实现
  6. 解决eclipse刚启动卡死的问题~~~亲测有效~~
  7. mysql 查询数据库名是否存在_SQL查询数据库是否存在
  8. freecplus框架简介
  9. sql server 2005 T-SQL @@TOTAL_WRITE (Transact-SQL)
  10. Android 仿微信二维码名片制作,生成二维码,扫码生成名片表单信息
  11. 流式传输 android,通过RTSP将视频流式传输至Android
  12. graphpad两组t检验_GraphPad prism -- t检验操作步骤解析~
  13. centos 7重置密码
  14. 实战:高级,高级 让 Kubectl的输出像彩虹一样绚丽多彩-2021.11.13
  15. CSAPP AttackLab解题记录
  16. 计算机网络实验报告哈工大_哈工大计算机网络实验报告之二
  17. Proteus仿真STM32F103R6输出正弦波
  18. 原来linux自带编译器啊!!!
  19. python实现栅格计算器功能
  20. 2D - 2D 点对 求解基础矩阵 F 本质矩阵E 单应矩阵 H 进而求 旋转矩阵 R 和 t

热门文章

  1. 【C++系列P7】模板搞不懂?脑阔抖三抖!!精讲一篇过!
  2. Xshell基本命令指南
  3. oracle 安装包校验,Windows上的Oracle 12c安装 - 安装程序验证失败
  4. 安装Oracle数据库提示:【INS-30014】无法检查指定的位置是否位于CFS上
  5. 关于移动端页面在手机调整字体大小后无法正常显示(已解决)
  6. “讨好型人格”在社会中为什么总是吃亏
  7. 微信上线新功能,春运回家用得上
  8. 2022年云计算的趋势有哪些
  9. 5个身份和访问管理的最佳实践
  10. 操作系统 首次适应算法 最佳适应算法(C++)