计算机网络基础——网络模型(OSI、TCP/IP)、网络应用模式

计算机网络是独立自主的计算机互联而成的系统的总称,组建计算机网络最主要的目的是实现多台计算机之间的通信和资源共享。(by jackfrued
实现网络通信的基础是网络通信协议,这些协议通常是由互联网工程任务组 (IETF)制定的。所谓“协议”就是通信计算机双方必须共同遵从的一组约定,例如怎样建立连接、怎样互相识别等,网络协议的三要素是:语法、语义和时序。

1. OSI 七层模型

开放式系统互联模型(英语:Open System Interconnection Model,缩写:OSI;简称为OSI模型)是一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。定义于ISO/IEC 7498-1。根据建议X.200,OSI将计算机网络体系结构划分为以下七层,标有1~7,第1层在底部。 “OSI/RM”是英文“Open Systems Interconnection Reference Model”的缩写。
在这里插入图片描述

1.1 第7层 应用层

应用层(Application Layer)提供为应用软件而设的接口,以设置与另一应用软件之间的通信。例如: HTTP、HTTPS、FTP、TELNET、SSH、SMTP、POP3、HTML等。

1.2 第6层 表示层

表达层(Presentation Layer)把数据转换为能与接收者的系统格式兼容并适合传输的格式。

1.3 第5层 会话层

会话层(Session Layer)负责在数据传输中设置和维护计算机网络中两台计算机之间的通信连接。

1.4 第4层 传输层

传输层(Transport Layer)把传输表头(TH)加至数据以形成数据包。传输表头包含了所使用的协议等发送信息。例如:传输控制协议(TCP)等。

1.5 第3层 网络层

网络层(Network Layer)决定数据的路径选择和转寄,将网络表头(NH)加至数据包,以形成报文。网络表头包含了网络数据。例如:互联网协议(IP)等。

1.6 第2层 数据链路层

数据链路层(Data Link Layer)负责网络寻址、错误侦测和改错。当表头和表尾被加至数据包时,会形成信息框(Data Frame)。数据链表头(DLH)是包含了物理地址和错误侦测及改错的方法。数据链表尾(DLT)是一串指示数据包末端的字符串。例如以太网、无线局域网(Wi-Fi)和通用分组无线服务(GPRS)等。

分为两个子层:逻辑链路控制(logical link control,LLC)子层和介质访问控制(Media access control,MAC)子层。

1.7 第1层 物理层

物理层(Physical Layer)在局部局域网上传送数据帧(Data Frame),它负责管理电脑通信设备和网络媒体之间的互通。包括了针脚、电压、线缆规范、集线器、中继器、网卡、主机接口卡等。

2. TCP/IP 四层模型

2.1 TCP/IP 模型与 OSI 模型的区别与联系

  • OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。
  • TCP/IP是四层结构,而OSI是七层结构。OSI的最高三层在TCP中用应用层表示。
  • OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。

  • OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。
  • TCP/IP他是一个协议簇;而OSI(开放系统互联)则是一个模型,且TCP/IP的开发时间在OSI之前。
  • TCP/IP是由一些交互性的模块做成的分层次的协议,其中每个模块提供特定的功能;OSi则指定了哪个功能是属于哪一层的。
    在这里插入图片描述

2.2 TCP/IP 参考模型

TCP/IP参考模型是一个抽象的分层模型,这个模型中,所有的TCP/IP系列网络协议都被归类到4个抽象的“层”中。每一抽象层创建在低一层提供的服务上,并且为高一层提供服务。该模型将我们使用的网络从逻辑上分解为四个层次,自底向上依次是:网络接口层、网络层、传输层和应用层,如下图所示。
在这里插入图片描述

2.3 IP 协议

IP 协议通常被翻译为网际协议,它服务于网络层,主要实现了寻址和路由的功能。接入网络的每一台主机都需要有自己的IP地址,IP地址就是主机在计算机网络上的身份标识。当然由于IPv4地址的匮乏,我们平常在家里、办公室以及其他可以接入网络的公共区域上网时获得的IP地址并不是全球唯一的IP地址,而是一个局域网(LAN)中的内部IP地址,通过网络地址转换(NAT)服务我们也可以实现对网络的访问。计算机网络上有大量的被我们称为“路由器”的网络中继设备,它们会存储转发我们发送到网络上的数据分组,让从源头发出的数据最终能够找到传送到目的地通路,这项功能就是所谓的路由。

2.4 TCP 协议

TCP全称传输控制协议,它是基于IP提供的寻址和路由服务而建立起来的负责实现端到端可靠传输的协议,之所以将TCP称为可靠的传输协议是因为TCP向调用者承诺了三件事情:

  • 数据不传丢不传错(利用握手、校验和重传机制可以实现)。
  • 流量控制(通过滑动窗口匹配数据发送者和接收者之间的传输速度)。
  • 拥塞控制(通过RTT时间以及对滑动窗口的控制缓解网络拥堵)。

2.5 传输单元

数据帧(Frame):是一种信息单位,它的起始点和目的点都是数据链路层
数据包(Packet):也是一种信息单位,它的起始和目的地是网络层
数据报(Datagram):通常是指起始点和目的地都使用无连接网络服务的的网络层的信息单元。
段(Segment):通常是指起始点和目的地都是传输层的信息单元。
消息(message):是指起始点和目的地都在网络层以上(经常在应用层)的信息单元。


下面是一些零碎的知识:

2.5.1 数据帧

参考:https://zhuanlan.zhihu.com/p/32059190
所谓的“数据帧(Data frame)”,就是“数据链路层”的协议数据单元,它包括三部分:帧头、数据部分、帧尾。其中,帧头和帧尾包含一些必要的控制信息,比如同步信息、地址信息、差错控制信息等;数据部分则包含网络层传下来的数据,比如“IP数据包”等等。
除了应用层没有头部,其他都有。
在这里插入图片描述

2.5.2 TCP/IP 数据包的格式

参考: https://blog.csdn.net/luguifang2011/article/details/40658723
在这里插入图片描述

注释:图中括号中的数字代表的是当前域所占的空间大小,单位是bit位。

橙黄色 的是数据链路层的头部,一共14字节;

蓝绿色 的部分是IP头部,一般是20字节

紫色 部分是TCP头部,一般是20字节
(HTML/CSS 颜色编码查询:https://htmlcolorcodes.com/zh/yanse-ming/

数据链路层的头部:

  • 目的MAC:当前step目的主机的mac地址
  • 源MAC:当前step的源主机的mac地址
  • 类型:指定网络层所用的协议类型,通常是IP协议,0x0800

IP 头部

  • 版本:记录数据报属于哪一个版本的协议,如IPv4或IPv6
  • 首部长度:指明IP头部长度,单位是字,也就是两个字节。该域的值最小为5,就是标准的头部长度;最大为15,表明有扩展部分。
  • 服务类型:用来区分不同服务的需要
  • 数据报总长:包含IP头部的数据报的总长度。注意,这里不包括链路层的头部,目前最大值是65535字节。
  • 分组ID:这个域的作用是当一个大的数据报被拆分时,拆分成的小的数据段的这个域都是一样的。
  • 标记:共三个bit,第一个未使用;第二个DF(Don’t Fragment),设置成1表示这个数据包不能被分割,这个是针对路由器的一条指令;第三个MF(MoreFragment),如果一个数据包被分割了,那么除了最后一个分段以外的所有分段都必须设置为1,用来表示后面还有更多的分段没有到达,最后一个设置为0,用来表示分割的段全部到达。
  • 段偏移量:这个域有13bit,也就是每一个数据报最多有8192个分段。每一个分段的长度必须是8字节的倍数,也就是说8字节是分段的基本单位,当然分组的最后一个段不做限制。这样最大的数据报长度为8*8192=65536字节,比目前限制的最大数据报长度还多1,能够满足对网络中所有数据报传送的需求。
  • 生存时间:这是一个生存期计数器,最大为255s,但是实际上使用的时候用作跳数计数器,当值为0时数据报被丢弃,用来避免一个数据报过久的逗留在网络中。
  • 高层协议:这里和链路层的类型作用相同,用来表示更高层的协议,这个数据报里是TCP
  • 首部校验和:IP头部的校验和
  • 源IP地址:数据报来源主机的IP地址
  • 目的IP地址:数据报目的主机的IP地址

TCP 头部

  • 源端口号:数据报来源主机的端口号

  • 目的端口号:数据报目的主机的端口号(注意:源IP地址,目的IP地址,源端口号,目的端口号这四个字段唯一的确定了一个TCP链接。

  • TCP序号(sq):发送的TCP的序号,从0开始,实际中这个值就是发送的数据报中内容的字节数,比如我发送的第一个报中sq=0,数据报内容20字节,那么下一个数据报的sq就应该是21。

  • 捎带的确认(ack):确认收到上一个数据报,然后act的值是指定自己想要收到的下一个数据报的sq,比如我收到一个数据报的sq=0,数据报内容20字节,那么我的ack就应该是21,用来标明我sq=0,内容为20字节的数据报已经收到,我接下来期望收到的是sq=21的数据报。

  • 首部长度:和IP头部的长度域类似,这个域用来标明TCP头部的长度,单位也是字。

  • 保留:6bit未使用的域

  • Flag:从左到右,[URG|ACK|PSH|RST|SYN|FIN]

  • ACK设置为1表示前面的确认(ack)是有效的,否则前面的确认应被忽略。
  • PSH表示要求对方在接到数据后立即请求递交给应用程序,而不是缓冲起来直到缓冲区收满为止。
  • RST用于重置一个已经混乱的连接。
  • SYN用于建立连接的过程。在链接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域。链接应答则捎带了一个确认,即SYN=1和ACK=1.本质上SYN位是用来表示CONNECTION REQUEST和CONNECTION ACCEPTED,然后进一步用ACK来区分是请求还是应答,的确很高明。
  • FIN用来释放一个连接。它表示发送方已经没有数据要传输了。然后,在关闭一个连接后,关闭进程可能会在一段不确定的时间内继续接收到数据。SYN和FIN数据段都有TCP序号,从而保证了这两种数据段被按照正确的顺序来进行处理。
  • 窗口大小:指定了从被确认的字节算起可以发送多少个字节。要深入理解这个域的含义,可以参看TCP用色控制和慢启动算法

  • 校验和:校验范围包括TCP头、数据报内容和概念性伪头部。概念性伪头部又包括源IP,目的IP,TCP协议号。

  • 紧急指针:指向数据报中紧急数据最后一个字节的下一个字节。

2.5.3 数据包在传送时的封装和解封装如下所示:

在这里插入图片描述

2.5.4 TCP包的分割(segment)

TCP包允许的最大长度为1460byte,超过这个长度会进行分割(未超过这个长度也可以按需求进行分割)。分割的数据的头(Head)都是一样的。
在这里插入图片描述

3. 网络应用模式

3.1 C/S模式和B/S模式

这里的C指的是Client(客户端),通常是一个需要安装到某个宿主操作系统上的应用程序;而B指的是Browser(浏览器),它几乎是所有图形化操作系统都默认安装了的一个应用软件;通过C或B都可以实现对S(服务器)的访问。

  • C/S的最大优点是能够实现复杂的应用构造,安全性高,数据传输速度快。
  • C/S架构的劣势是高昂的维护成本且投资大。
  • B/S最大的优点就是可以在任何地方进行操作而不用安装任何专门的软件,只要有一台能上网的电脑就能使用,客户端零安装、零维护。系统的扩展非常容易。
  • B/S架构的劣势应用服务器运行数据负荷较重。

3.2 去中心化的网络应用模式

不管是B/S还是C/S都需要服务器的存在,服务器就是整个应用模式的中心,而去中心化的网络应用通常没有固定的服务器或者固定的客户端,所有应用的使用者既可以作为资源的提供者也可以作为资源的访问者。

原创文章 57 获赞 8 访问量 4571

猜你喜欢

转载自blog.csdn.net/amnesiagreen/article/details/106097334