首页 > 其他分享 >网络模型

网络模型

时间:2023-10-11 21:15:17浏览次数:40  
标签:字节 IP 模型 网络 TCP 数据包 服务端 客户端

OSI七层参考模型

OSI模型,开放式通信系统互联参考模型(Open System Interconnection Reference Model),是国际标准化组织(ISO)提出的一个试图使各种计算机在世界范围内互连为网络的标准框架,简称OSI(OSI/RM)。

思想:分层

  • 更利于标准化。
  • 降低各层次之间的关联性:某一层协议的增加或者减少,尽量不要影响其他层次。

相同层次之间的设备协议具有相同或者相似的作用,不同层次之间具有明显的差异,每一层都在下一层的基础之上提供某种增值服务。

OSI七层模型的七个层次

  • 应用层

    包括各种协议,具体的面向用户的应用。

  • 表示层

    提供数据格式、变换和编码转换,从应用层接收消息,转换格式,并传送到会话层。

  • 会话层

    发现,建立,维护和断开一次会话连接。

    负责执行会话规则(如连接是否允许半双工或全双工通信)、同步数据流以及当故障发生时重新建立连接。

  • 传输层

    优化传输,端对端的传输。

    接收来自会话层的数据,向网络层传送分组并确保分组完整和正确到达它们的目的地。

    区分进程和服务:端口号(16位二进制 0-65535)

    端口号的主要作用是表示一台计算机中的特定进程所提供的服务。

    知名端口号:是一些众人皆知著名的端口号,这些端口号固定分配给一些服务,范围是:0-1023

    例如:80端口是HTTP协议服务,443端口是HTTPS协议服务等。

  • 网络层

    负责端到端的数据的路由或交换。

    路由器 — IP地址(逻辑地址)

  • 数据链路层

    电信号与二进制之间的转换。介质访问控制层MAC,逻辑链路控制层LLC。

    交换机 — MAC地址(物理地址)

  • 物理层

    处理电信号。

    从数据链路层接收,将比特流转换成底层物理介质上的信号。

TCP/IP模型

TCP/IP协议簇

TCP/IP协议簇是一个四层协议系统,自顶向下分别是:应用层 传输层 网络层 数据链路层。每一层完成不同的功能,且通过若干协议来实现,上层协议使用下层协议提供的服务。

协议

为了完成计算机之间有序的信息交换,提出了通信协议的概念,其定义是相互通信的双方(或多方)对如何进行信息交换所必须遵守的一整套规则。

OSI 模型和 TCP/IP 模型的差异

OSI的上三层合并为一层,数据链路层与物理层合二为一,OSI分层太细并不实用。

TCP/IP标准模型与TCP/IP对等模型都被广泛的使用,只是侧重点稍有不同。

协议数据单元

协议数据单元PDU(Protocol Data Unit)是指对等层次之间传递的数据单位。

应用层 — 数据报文(message)

传输层 — 数据段(segment)

网络层 — 数据包(packet)

数据链路层 — 数据帧(frame)

物理层 — 比特流(bit)

封装与解封装

封装 — 每一层都把上一层的协议包当成数据部分,加上自己的协议头部,组成自己的协议包。

解封装 — 封装的逆过程,可以理解为还原数据的过程。

TCP/IP协议

应用层

最上层的,用户可以直接接触到的就是应用层(Application Layer),电脑或手机使用的应用软件都是在应用层实现。

应用层只需要专注于为用户提供应用功能。

比如常见的服务与对应端口 HTTP — 80、HTTPS(HTTP+SSL/TLS) — 443、FTP — 20/21、Telnet — 23、DNS — 53、DHCP—67/68 等。

传输层

应用层的数据报会传给传输层,传输层(Transport Layer)是为应用层提供网络支持的。

在传输层会有两个传输协议,分别是 TCPUDP

TCP 的全称叫传输控制协议(Transmission Control Protocol),大部分应用使用的正是 TCP 传输层协议,比如 HTTP 应用层协议。TCP 相比 UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方。

UDP 相对来说就很简单,简单到只负责发送数据包,不保证数据包是否能抵达对方,它实时性相对更好,传输效率也高。

TCP和UDP的区别

  1. TCP是面向连接(TCP三次握手)的协议,而UDP是无连接的协议。

  2. TCP的传输是可靠的 —— 排序、确认、重传、流控,而UDP的传输是不可靠的。

  3. TCP可以进行流控(滑动窗口机制),而UDP不行。

  4. TCP可以进行分段,而UDP不能。

  5. TCP转发数据包的速率慢,并且占用资源比较多。UDP的转发效率高于TCP,并且占用资源也会少一些。

应用场景:TCP更加适用于对数据包可靠性要求较高的情况,比如说传输文件,邮件等,而UDP适用于对可靠性要求较低,但是对转发效率要求较高的场景,比如说,即时通讯类。

TCP报头

TCP的报头组成:源端口、目的端口、 序号、确认号、 首部长度、保留位、标志位、窗口、 检验和、紧急指针。

  • 源目端口号:各占2个字节,分别写入源端口和目的端口,即表示来源和目标的进程。

  • 序号:占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。

  • 确认号:占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。

  • 首部长度:占4位,它指出TCP报文的数据距离TCP报文段的起始处有多远。

  • 保留位:占6位,保留今后使用,但目前应都位0。

  • 标志位:重要的三个,确认ACK,仅当ACK=1时,确认号字段才有效;同步SYN,在连接建立时用来同步序号;终止FIN,用来释放一个连接。

  • 窗口大小:占2字节,指的是通知接收方,发送本报文你需要有多大的空间来接收。

  • 检验和:占2字节,校验首部和数据这两部分。

  • 紧急指针:占2字节,当URG=1时才有意义,指出本报文段中的紧急数据的字节数。

TCP报头最小20字节,没有选项字段(只有前5行)

TCP三次握手

TCP 是面向连接的协议,所以使用 TCP 前必须先建立连接,而建立连接是通过三次握手来完成的。三次握手可以确保双方同时具备完整的发送和接收数据的能力。

  • 一开始,客户端和服务端都处于 CLOSE 状态。先是服务端主动监听某个端口,处于 LISTEN 状态。

  • 第一次握手,客户端会随机初始化序号(c_seq_num = x),将此序号置于 TCP 首部的序号字段中,同时把 SYN 标志位置为 1,表示 SYN 报文。接着把第一个 SYN 报文发送给服务端,表示向服务端发起连接,该报文不包含应用层数据,之后客户端处于 SYN-SENT 状态。

  • 第二次握手,服务端收到客户端的 SYN 报文后,首先也随机初始化自己的序号(s_seq_num = y),将此序号填入 TCP 首部的序号字段中,其次把 TCP 首部的确认号字段填入 x+1,接着把 SYN 和 ACK 标志位都置为 1。最后把该报文发给客户端,该报文也不包含应用层数据,之后服务端处于 SYN-RCVD 状态。

  • 第三次握手,客户端收到服务端报文后,还要向服务端回复一个应答报文,首先该应答报文 TCP 首部 ACK 标志位置为 1 ,其次确认号字段填入 y+1 ,最后把该报文发送给服务端,这次报文可以携带客户到服务端的数据,之后客户端处于 ESTABLISHED 状态。

  • 最后,服务端收到客户端的应答报文后,也进入 ESTABLISHED 状态。

一旦完成三次握手,双方都处于 ESTABLISHED 状态,此时连接就已建立完成,客户端和服务端就可以相互发送数据了。

TCP四次挥手

TCP 断开连接是通过四次挥手方式的方式完成,双方都可以主动断开连接,断开连接后主机中的资源将被释放。

  • 第一次挥手,客户端发送一个 FIN 标志位被置为 1 的报文,即 FIN 报文,告诉服务器需要关闭连接。之后客户端进入 FIN_WAIT_1 状态。
  • 第二次挥手,服务端收到该报文后,会发送一个 ACK 的确认包,告诉客户端接收到关闭的请求。发送完成后,服务端进入 CLOSE_WAIT 状态,客户端收到这个包后,进入 FIN_WAIT_2 状态,等待服务器关闭连接。
  • 第三次挥手,等待服务端处理完数据后,服务端准备好关闭连接时,也向客户端发送 FIN 报文,告诉客户端准备关闭。之后服务端进入 LAST_ACK 状态,等待客户端确认。
  • 第四次挥手,客户端接收到服务端的关闭请求,再发送一个 ACK 的确认包,进入 TIME_WAIT 状态,服务端收到了 ACK 应答报文后,就进入了 CLOSE 状态,服务端已经完成连接的关闭。客户端在经过 2MSL 一段时间后,自动进入 CLOSE 状态,此时客户端也完成了连接的关闭。

每个方向都需要一个 FIN 和一个 ACK,因此通常被称为四次挥手。

TCP流量控制 — 滑动窗口机制

滑动窗口,是TCP使用的一种流量控制方法。该机制允许发送方在停止并等待确认前可以连续发送多个分组。由于发送方不必每发一个分组就停下来等待确认,因此该协议可以加速数据的传输。

假定发送方设备以每一次三个数据包的方式发送数据,也就是说,窗口大小为3。发送方发送序列号为1、2、3的三个数据包,接收方设备成功接收数据包,用序列号4确认。发送方设备收到确认,继续以窗口大小3发送数据。当接收方设备要求降低或者增大网络流量时,可以对窗口大小(WIN值)进行减小或者增加。

TCP分段大小

MTU—最大传输单元,MTU规定了数据到数据链路层的大小不能超过1500字节。

MSS—最大段长度(MTU - 网络层报头(最短20字节) - 传输层报头(最短20字节))= 1460字节

网络层

IP协议在 TCP/IP 参考模型中处于第三层,也就是网络层。

IP报头

  • 版本:占4个位,标识目前采用的IP协议的版本号(0100-IPv4,0110-IPv6)。
  • 首部长度:占4个位,这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分。
  • 区分服务:占1个字节,定义包的优先级,时延,吞吐量,可靠性,传输成本。
  • 总长度:占2个字节, 以字节为单位计算的IP包的长度(包括头部和数据),所以IP包最大长度65535字节。
  • 标识:占2个字节,该字段和标志和片偏移字段联合使用,对大的上层数据包进行分段(fragment)操作。
  • 标志:占3位,该字段第一位不使用。第二位是DF(Don't Fragment)位,DF位置为1时表明路由器不能对该上层数据包分段。如果一个上层数据包无法在不分段的情况下进行转发,则路由器会丢弃该上层数据包并返回一个错误信息。第三位是MF(More Fragments)位,当路由器对一个上层数据包分片,则路由器会在除了最后一个分片的IP包的包头中将MF位设为1。
  • 片偏移:占13位,较长的数据包在分片后,某片在原分组中的相对位置,接收端靠此来组装还原IP包。
  • 生存时间:占1个字节,TTL,当IP经过沿途的每一个路由器的时候,路由器会将IP包的TTL值减1。直到减到0时,该IP包会被丢弃。
  • 协议:占1个字节,标识了上层所使用的协议。
  • 首部校验和:占2个字节,只用来做IP首部的正确性检测,但不包含数据部分。
  • 源和目的地址:各占4个字节,标识了这个IP包源和目的主机的IP地址。

IP分片

链路层的数据部分就是IP分组,该分组的MTU是1500字节,当网络层的IP分组超过了1500字节,此时就要进行分片。

  • 标识

    同一个IP数据报的分片,使用相同的标识。

  • 标志

    最高位是保留位 , 没有意义 。

    中间位DF=1时,不能分片;DF=0时,允许分片。

    最低位MF=1时,表示后面还有分片;MF=0时,本分片就是该分组的最后一个分片,后面没有分片。

    只有DF=0时,MF才有意义。

  • 片偏移

    较长的分组在分片后,中间的某个分片在原来的 IP 分组中的相对位置。片偏移以8个字节为偏移单位。

数据链路层

生成了 IP 数据包之后,接下来要交给数据链路层(Link Layer)封装成MAC帧。

MAC头部是以太网使用的头部,它包含了接收方和发送方的MAC地址等信息,可以通过ARP协议获取对方的MAC地址。

为网络层提供链路级别传输的服务,负责在底层网络上发送原始数据包,工作在网卡这个层次,使用MAC地址来标识设备。

综上所述,TCP/IP 网络通常是由上到下分成4层,分别是应用层,传输层,网络层和数据链路层

标签:字节,IP,模型,网络,TCP,数据包,服务端,客户端
From: https://www.cnblogs.com/smileleooo/p/17757929.html

相关文章

  • 网络基础-OSI七层vsTCP/UDP四层 五层 数据封装
    1.0网络基础1.1网络是什么?网络是信息传输、接收、共享的虚拟平台,通过它把各个点、面、体的信息联系到一起,从而实现这些资源的共享网络分类:局域网,城域网,广域网1.2数据通信方式单播:一对一组播:一对多广播:一对所有2.0OIS七层模型vsTCP/IP四层五层模型 2.1分层思想①......
  • 2023/10/11 网络的学习
    学习笔记1网络基础1.1 什么是网络网络:计算机网络,电脑和电脑之间通过线缆或其他介质连接起来,并实现相互之间的通信。通信:人与人,人与物,物与物之间通过某种媒介和行为进行沟通。1.2 网络的分类局域网:作用于相对较小区域。例如企业内部网络,校园内部网络等。城域网:作用于城......
  • 网络编程
    1、程序中每个程序都有端⼝号80端⼝,⽹络端⼝ mysql默认3306oracle默认1521Tomcat默认80802、模拟往服务器上传⽂件,读取客户端要上传的⽂件,保存到服务器上的硬盘,服务器给客户端发个消息,"上传成功"。明确数据源:客户端上传的⽂件客户端的硬盘上的⽂......
  • 《动手学深度学习 Pytorch版》 8.5 循环神经网络的从零开始实现
    %matplotlibinlineimportmathimporttorchfromtorchimportnnfromtorch.nnimportfunctionalasFfromd2limporttorchasd2lbatch_size,num_steps=32,35train_iter,vocab=d2l.load_data_time_machine(batch_size,num_steps)#仍然使用时间机器数据集......
  • 《算法学习专栏》—— DP问题之背包模型
    2023年10月11日更新于2023年10月11日一、前言本栏,为背包模型,题目主要来源日常,目前主要来源于Acwing的提高课。希望以后做到背包的题目,也能加进来,不断完善。使用的分析方法均为闫式DP分析法。字臭。。。希望能用手写板慢慢写的好看。二、背包模型2.1目前的模型01背包模型......
  • 网络基础
    背景计算机网络的诞生背景可以追溯到20世纪60年代和70年代的美国。当时,计算机的发展迅速,但是由于计算机之间缺乏互联,使得它们之间的通信和数据共享变得非常困难。在这种情况下,计算机科学家开始研究如何将计算机连接起来,以便它们可以相互通信和共享资源。这导致了计算机网络的发展......
  • 智安网络|揭开云服务的神秘面纱:其含义和功能的综合指南
    随着信息技术的不断发展,云服务已经成为了我们生活中的一个不可或缺的部分。无论是在个人生活中还是在商业领域,云服务都具有广泛的应用。什么是云服务?云服务是一种基于互联网的计算和存储资源提供方式,它允许用户通过互联网访问和使用计算资源、存储空间和应用程序,而无需拥有或维护实......
  • 花朵识别系统Python+TensorFlow+Django+网页界面+算法模型
    一、介绍花朵识别系统,使用Python作为主要编程语言进行开发,使用TensorFlow搭建卷积神经网络算法模型,并基于多种花朵数据集进行模型训练,最后得到一个精度较高的h5模型文件。并基于Django框架搭建网页端可视化操作界面。实现用户上传一张花朵图片,识别其名称。二、效果图片展示......
  • 摘要模型是什么-Bart
    摘要模型分为两种提取式摘要模型:提取式摘要模型不生成新的文本,而是从原始文本中选择或提取现有句子、段落或短语,以创建摘要。这些模型通过评估文本中的句子的相关性、重要性或其他特征来选择最相关的部分,以构建摘要。提取式摘要通常更易实现,因为它不涉及文本生成,而是依赖于......
  • 门票赠送:2023百度世界大会-大模型驱动产业发展论坛
    赠送的门票由行行AI提供,行行AI是园子的天使投资方顺顺智慧与园子的合资公司。大模型作为核心的高级生产力正引领着崭新的经济和社会格局,推动着人工智能成为产业发展的新引擎。百度智能云致力于与客户、合作伙伴紧密协作,将大模型深度融入各领域,把握重构机遇,激发开发者和创企的创......