网络模型、网络连接

news2025/3/1 10:01:44

网络模型、网络连接

  • 网络模型
    • OSI模型:
      • 应用层
      • 表示层
      • 会话层
      • 传输层
      • 网络层
      • 数据链路层
      • 物理层
  • 网络连接
    • Socket(套接字)
      • 流套接字(sock_stream)
      • 数据报套接字(sock_dgram)
      • 原始套接字(sock_raw)

网络模型

OSI模型:

百度百科-OSI模型

开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。定义于ISO/IEC 7498-1。

通常说的七层网络模型就是指OSI模型,OSI模型是国际标准化组织定义的,是为了整个网络环境定义的模型,而其他所谓的五层、四层网络模型则是简化后的非官方模型。
网络模型
从上到下以此为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。从应用层到物理层,每一层模型依赖下层模型,最终完成数据的传输和解析。
数据流程过程

应用层

应用层(Application Layer)提供软件之间通信的接口。为应用软件提供服务,也向表示层发出请求。服务元素分为两类:公共应用服务元素CASE和特定应用服务元素SASE。
应用层传递的数据单元是APDU

常用协议:
DNS、HTTP、HTTPS、FTP、SSH、SMTP、POP3等

表示层

表达层(Presentation Layer),管理数据的表示方式,定义数据格式及加密、压缩。使得不同类型的计算机或不同方式的表示数值能够跨网络进行通信。
对于协议变换的服务,无论发送方的表示层做了什么,接收方的表示层都必须予以复原,从而使连接的双方在某个时刻分享相似的数据视图。
表示层传递的数据单元是APDU

常用协议:
ASCII、SSL/TLS、JPEG、MIDI

会话层

会话层(Session Layer),建立和管理应用程序之间的通信。定义了如何创建会话连接、会话控制(token令牌)和连接释放。包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的。在会话层及以上的高层中,数据传送的单位不在另外命名,而是统称为报文。
会话层传递的数据单元是SPDU

常用协议:
ADSP、RPC

传输层

传输层(Transport Layer),把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。负责向两个主机中进程之间的通信提供服务。
传输层的服务一般要经历传输连接建立阶段,数据传送阶段,传输连接释放阶段3个阶段才算完成一个完整的服务过程。
传输层提供逻辑连接的建立、传输层寻址、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复等服务。
传输层传递的数据单元是TPDU
TCP的数据单元称为段 (segments)而UDP协议的数据单元称为“数据报(datagrams)。

常用协议:
TCP、UDP、SPX

网络层

网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成分组。网络表头包含了网络数据。
该层主要任务为通过路由选择算法 ,为报文通过通信子网选择最适当的路径。这一层定义的是IP地址,通过IP寻址。
网络层的中间设备叫做路由器(router)
传输层传递的数据单元是数据包(packet)

计算机网络-网络层
常用协议:
IP、ICMP

数据链路层

数据链路层(Data Link Layer)负责网络寻址、错误侦测和误差纠正控制。当表头和表尾被加至数据包时,会形成帧。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。
数据链路层协议又被分为两个子层 :逻辑链路控制(LLC)协议和媒体访问控制(MAC)协议。

数据链路层的中间设备叫做网桥或桥接器(bridge)
数据链路层传递的数据单元是数据帧(frame)

计算机网络-数据链路层
常用协议:
HDLC、PPP、SLIP、WIFI、GPRS

物理层

物理层(Physical Layer)在局部局域网上传送数据帧(data frame),它负责管理计算机通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机适配器等。
物理层规定:为传输数据所需要的物理链路创建、维持、拆除,而提供具有机械的,电子的,功能的和规范的特性。
简单的说,物理层确保原始的数据可在各种物理媒体上传输。局域网与广域网皆属第1、2层。

物理层的中间设备叫做转发器(repeater)
物理层传递的数据单元是数据位(bit)

常用协议:
EIA/TIA-232、EIA/TIA-485、EIA/TIA-499、V.35、V.24、RJ45
补充:
EIA (Electronic Industries Association 美国电子工业协会)是专门制定有关界面电气特性的组织。
TIA(Telecommunications Industries Association:美国通讯工业协会)则是专门制定通讯配线及架构的标准组织。

协议数据单元PDU(ProtocolDataUnit)是指对等层次之间传递的数据单元。
物理层 -> 数据位(bit)
数据链路 -> 数据帧(frame)
网络层 -> 数据包(分组)(packet)
传输层 -> 数据段(segment)
其他更高层不在分类,统称为数据(data)

白话:小明想对小红说一句话,在计算机的帮助下(通过一系列的协议和数据处理)最终会到达小红面前,使得小明想要表达的内容,小红可以通过计算机完整无误的看到小明说的话。

小明:你吃饭了吗?
应用层:编辑好信息,向下一层发送。
表示层:翻译、加密、压缩数据。
会话层:打包数据。
传输层:将包发给下一次层。
网络层:封装IP地址。
链路层:加个头尾转成帧,在加上MAC,转电信号。
物理层:定义信号含义,作为物理载体传输。

小红想要看到小明的消息要经过过:
物理层:收到信号,送到下一层。
链路层:转为帧,校错,送下层。
网络层:转报文,送包。
传输层:给下层。
会话层:看看数据完整不,少了没,完整了就送过去。
表示层:翻译下,解密。
应用层:他问我吃饭了没?(直男)

网络连接

Socket(套接字)

Socket是传输层协议的具体软件实现,socket是一个调用接口(API),主要用来对TCP/IP协议进行封装。socket上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口。
数据接收是由进程调用socket的接收函数发起的。
数据的发送是进程调用socket的发送函数发起的。

对于TCP/IP模型来讲,应用层向下到网络层,就要经过传输层,那传输层的其中一个实现就是socket,
socket提供了API供应用层的服务进行调用,这样就可以将这些连起来。

举例一个最常用的应用层协议HTTP,当我们在使用浏览器访问网页时,网页展示的数据就是从服务器端获取的数据,都说HTTP是基于TCP/IP的,这个基于的连接就是当HTTP进行时,如何驱动TCP/IP,就是通过socket进行。

流套接字(sock_stream)

流套接字用于提供面向连接、可靠的数据传输服务。特性符合TCP,原因就是其实用了TCP实现的。

数据报套接字(sock_dgram)

数据报套接字提供一种无连接的服务。不保证数据的可靠性,数据可能丢失或重复,不能保证数据的连续性。其使用的是UDP进行数据的传输。

原始套接字(sock_raw)

原始套接字可以读取非TCP/UDP协议外的数据。如果要访问其他协议发送的数据就得使用原始套接字。

工作流程:
通过互联网通信,至少需要一堆套接字,一个服务端,一个客户端。
1.服务端监听服务
服务监听,套接字没有具体连接的另一端,而是处于等待连接的状态,实时监控状态。
2.客户端请求
客户端发起连接请求,连接的目标为服务端的套接字。因此,客户端首要的任务是清楚的知道客户端的套接字(ip+port),然后就可以发起连接请求。
3.确认连接
当服务端监听到客户端发送的连接请求后,就会响应客户端的请求,建立一个新的线程,并把服务器端套接字的描述发送给客户端。一旦客户端确认了此描述,连接就建立好了。而服务器端继续保持监听状态,接收其他客户端的连接请求。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kroger EDI 855 采购订单确认报文详解

本文着重讲述Kroger EDI项目中,供应商发给Kroger的X12 855EDI 规范报文(采购订单确认)解读。 在此前的文章如何读懂X12报文中,我们对X12已经做了详细的介绍,大家可以以此为基础,深入了解855采购订单确认报…

CMake构建工具使用教程

1.简介 CMake是一个开源的、跨平台的C构建工具,通过平台和编译器无关的配置文件来声明构建目标,支持Make、ninja、MSBuild等多种底层构建工具,大多数IDE(例如CLion、Visual Studio、Visual Studio Code等)也都支持CMa…

【ZOJ 1067】Color Me Less 题解(vector+开方)

问题 颜色缩减是从一组离散颜色到较小颜色的映射。这个问题的解决方案需要在标准的24位RGB颜色空间中执行这样的映射。输入由十六个RGB颜色值的目标集合和要映射到目标集合中最接近的颜色的任意RGB颜色集合组成。为了我们的目的,RGB颜色被定义为有序三元组&#xff…

OpenGL ES 绘制一张图片

GLSL 语法与内建函数 GLSL 的修饰符与数据类型 GLSL 中变量的修饰符 const:修饰不可被外界改变的常量attribute:修饰经常更改的变量,只可以在顶点着色器中使用uniform:修饰不经常更改的变量,可用于顶点着色器和片段…

vue中go.js的使用教学(五:数据绑定)

一、一个简单的数据绑定(go.Binding)看注释为绑定 diagram.nodeTemplate $(go.Node, "Auto",$(go.Shape, "RoundedRectangle",{ fill: "white" },new go.Binding("fill", "color")), // shape.fill …

Nginx 部署 Vue 项目以及 Vue 项目刷新出现 404 的问题(完整步骤)(亲测有效)

Nginx 部署 Vue 项目以及 Vue 项目刷新出现 404 的问题(完整步骤)(亲测有效) 1.流程步骤(本教程下载的是1.20.2版本,放在D盘) 1-1. 首先去官方下载 nginx ,然后在当前目录下创建ht…

大幅提升爬取效率的一款实用工具

在做爬虫的时候,我们往往可能这些情况:网站比较复杂,会碰到很多重复请求。有时候爬虫意外中断了,但我们没有保存爬取状态,再次运行就需要重新爬取。还有诸如此类的问题。那怎么解决这些重复爬取的问题呢?大…

什么国产蓝牙耳机颜值高又好用?好用且高颜值蓝牙耳机推荐

随着蓝牙耳机的受欢迎程度加深,其受众群体也越来越多样。什么国产蓝牙耳机颜值高又好用?针对这个问题,我来给大家推荐几款好用且颜值高的蓝牙耳机,可以当个参考。 一、南卡小音舱蓝牙耳机 参考价:239 蓝牙版本&…

Go进阶(3):上下文context

一、背景 在 Go http包的Server中,每一个请求在都有一个对应的 goroutine去处理。请求处理函数通常会启动额外的goroutine用来访问后端服务,比如数据库和RPC服务。一个上游服务通常需要访问多个下游服务,比如终端用户的身份认证信息、验证相关…

【网工最关心的问题,看Chat GPT怎么回答?】

最近打开微信群聊,都是在说ChatGPT相关内容 那ChatGPT是什么? ChatGPT是由美国人工智能实验室OpenAI开发的一个对话AI模型,于2022年11月正式推出。它因其极其出色的文本生成和对话交互能力在世界范围内迅速走红,五天内用户破百万&…

19岁就患老年痴呆!这些前兆别忽视!

在大部分人的印象中,阿尔兹海默症好像是专属于老年人的疾病,而且它的另一个名字就是老年痴呆症。然而,前不久,一位19岁的男生患上了阿尔兹海默症,是迄今为止最年轻的患者。这个男生从17岁开始,就出现了注意…

return和finally执行顺序、运行时异常与一般异常异同、error和exception区别、Java异常处理机制原理与应用

文章目录1.try {}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后?2.运行时异常与一般异常有何异同?3.java 程序中的错误有三种类型分别是什么4.error和exception有什么…

GitHub推送报错:You‘re using an RSA key with SHA-1, which is no longer allowed

文章目录1、问题描述2、解决方案:重新生成密钥对3、将生成的公钥添加到GitHub4、向GitHub推送代码测试1、问题描述 在向GitHub推送代码的时候,执行git push命令出现如下问题: 原因是github不再支持RSA算法生成的密钥了,我们需要重…

《爆肝整理》保姆级系列教程python接口自动化(二十)--token登录(详解)

简介 为了验证用户登录情况以及减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。有些登录不是用 cookie 来验证的,是用 token 参数来判断是否登录。token 传参有两种一种是放在请求头里,本质上是跟 cookie 是一样的&…

微机原理学习总结0:前言

近期结束了微机课程的学习,(指刚考完试),正常情况下,后面应该不会再接触这门课程了,故在此记录自己这段时间的收获。 首先,十分推荐b站的一门课程,老师讲的很细致,很适合…

21个有用的python工具

Python是最流行的编程语言之一。 它简单、强大,并且由一个致力于开源项目的社区驱动。Python的大量使用是它如此流行的原因; 您可以免费构建软件、开发Web服务、执行数据分析和可视化以及训练机器学习模型。 Python开发工具 开发工具帮助我们构建快速可靠的Python…

生物素点击试剂1884349-58-9,Alkyne-PEG3-Biotin Diazo,炔基PEG3生物素重氮

Diazo Biotin-PEG3-alkyne,Alkyne-PEG3-Biotin Diazo,重氮生物素-PEG3-炔烃,重氮生物素PEG3炔烃,炔基PEG3生物素重氮产品结构式:产品规格:1.CAS号:1884349-58-92.分子式:C39H53N7O9S…

HANA SDA-远程数据源访问

我们需要把其他系统的数据拿过来,到BW里和财务的数据集成。 HANA SDA就是不复制数据,建立虚拟表(virtual table)来映射到远程数据源。通过这个虚拟表访问其他系统的数据。 对虚拟表的操作现在也可以查询,更新&#xff…

熵权法计算权重

文章目录1. 多属性决策问题2. 熵(entropy)3. 信息熵4. 熵权法5. 熵权法的实现基于信息论的熵值法是根据各指标所含信息有序程度的差异性来确定指标权重的客观赋权方法,仅依赖于数据本身的离散程度。熵用于度量不确定性,指标的离散…

LeetCode-Kotlin-Array-EASY-21至30题

关键字 PriorityQueuePairHashMap和HashSet的区别 1.HashMap实现了Map接口,而HashSet实现了Set接口。2.HashMap用于存储键值对,而HashSet用于存储对象。3.HashMap不允许有重复的键,可以允许有重复的值。HashSet不允许有重复元素。4.HashMap…