计算机网络

计算机网络,第1张

计算机网络 一、OSI七层模型

        OSI 指的是 Open System Interconnection Reference Model,开放式系统互联模型。

7

应用层:

  • 处理业务问题,处于最上方,只关心业务逻辑,不关心数据传输。
6

表现层:

  • 负责协商用于传输的数据格式,并转换数据格式,转换成对方能够用的数据。
5

会话层:负责管理两个网络实体间的连接,目标是提供稳定事实且连续的连接。

  • 主要是管理连接的建立和释放,维持通信。
4

传输层:负责将数据从一个实体传输到另一个实体,但不负责解决数据如何传输。主要负责

  • 数据拆分重组;
  • 数据传输纠错;
  • 处理数据频繁交换;
  • 控制传输数据速率;
  • 标明参与传输的应用服务器的端口号,用于端口寻址。
3

网络层:

  • 负责把一个封包从一个 IP 地址传输到另一个 IP 地址。

在传输层数据会变成一个封包。

核心是路由,路由算法帮助封包选择下一个目的地,路径最短?延迟最低?还是默认写死?

2

数据链路层:

  • 确保两个临近设备间数据的传输,隐藏底层实现;
  • 帧同步:两个设备之间传输时的协商速率问题;
  • 数据纠错。

1

物理层

封装和隐藏具体的传输手段,并且提供稳定的传输接口。

        OSI 的意义是统一了所有人对互联网的认知,但是分层设计相对臃肿,并非每一层都是必要的。

        例如:ping 的服务不需要会话层,也不用表现层。

        一般应用层会被设计成应用层、表示层和会话层三层结合,然后就总共五层了。

二、TCP/IP 互联网协议群

         TCP/IP 主要解决5个问题:报文拆分、增加协议头、数据在相邻设备间数据传递、路由和寻址、数据重组。

        报文拆分:用户数据量大,不支持一次性传输,需要拆分成多个数据块,另一方面还可以报文拆分可以复用传输路径。

        增加协议头:数据分块后在接收端需要重组,所以需要使用头部来添加字段描述。   

        数据在相邻设备间传递,数据从设备1发送到网关1,再由网关1发送到网关2,网关2发送到网关3,在从网关3发送到设备2。     

        路由算法: 数据从一个节点到另一个节点之后,接下来该去往哪里,就涉及到路由算法的问题,通过算法寻找到下一个要到达的节点。

        数据重组:和报文拆分相反,拆分后的报文通过传递后,根据消息头进行重组,再给接收方处理。

        TCP/IP协议群的5层模型

应用层:

数据从一个应用发往另一个应用的过程。

传输层:增加协议头

主机到主机之间的传输。

TCP 协议、UDP 协议、TLS/SSL、SCTP 等。

网络层:增加 IP 头。

提供路由和寻址,网络层需要增加自己的封包头,增加的封包头也会影响传输次数,可能添加一次报文拆。

IP 协议(ipv4 和 ipv6)、ICMP 协议、IPSec 协议。

数据链路层:

两个节点之间的物理连接。

物理层:

负责0-1信号的传输。

        5层模型和 OSI 的区别

        删除了会话层,是因为会话是虚拟概念,不是必需的。

        删除了表示层,数据压缩、数据格式转换不是应用必需的。

        如果应用需要这俩层,可以在应用层实现或者在传输层实现。

三、TCP 协议

        TCP 就是 Transport Control Protocol,传输层控制协议是一个可以提供可靠的、支持全双工、连接导向的协议,因此在客户端和服务端之间传输数据的时候,是必须先建立一个连接的。

        1.什么是连接?

        连接也被成为会话(Session),能让两个通信的程序确保彼此都在线,可以加快响应请求速度,使得通信更稳定、更安全,但是会消耗更多资源。

        2.什么是全双工?

        单工:任何时刻数据只能单向发送。

        半双工:允许数据在两个方向上传输,在某一时刻,只允许数据在一个方向上传输。

        全双工:任何时刻都能双向发送数据。

        3.什么是可靠性?

        可靠性是指数据保证无损传输,使无序的数据恢复有序,多播时每个接收方都能获得无损副本。多播可能要求具有强可靠性,也就是他一个接收方收到数据了,也同时要求所有的接收方都能获取到数据,反之,要求所有的接收方都获取不到数据。

        TCP 协议的工作过程

        因为要保持连接和数据可靠性,这里建立连接过程是有一个约束的,TCP 得保证每条发出去的数据必须得返回来,如果数据发出去了没有返回,就不叫连接,连接就是发出数据能尽快给返回,如果发出了数据,返回的时候慢了,那就认为超时了,那就重新连接或者断开连接。

        建立连接的过程(三次握手):

        发出数据通常叫做 “数据同步” ,所以叫做 syn;

        返回通常叫做 “响应” ,叫做 ack 。        

 

       TCP 协议总共要做的事情就是:报文拆分、增加协议头(TCP 头)、数据重组。

       TCP 报文拆分

       应用层数据通过报文拆分,会变成一个个数据块 chunk ,也叫做 TCP 段 Segment,为什么要进行报文拆分呢,一方面因为应用层很多时候无法一次性传输完,另一方面拆分后的数据可以实现并行传输。

        拆分是比较消耗数据资源的,需要 CPU 频繁的进行内存 *** 作,另一方面 TCP 也只是对数据做一个初步的拆分,网卡会进行更细粒度的拆分。

        传输数据如何保证数据?

         TCP 分的段其实是非常多的,可能不能一次性把所有的段进行排序,只能部分排序,有一个时间窗口的方案,每次只排序固定一个时间段内的数据,接收方等于每次给发送方一个时间窗口,在这个时间窗口内,把所有数据拿到,然后进行排序,接收方接收到这个时间窗口的数据以后,会对这些数据进行排序,如果发现不连续,他就会抛弃掉完整的时间窗口数据,让发送方重发。

        因为 TCP 协议是一个双工协议,意味着 A 可以不断的给 B 传送,B 可以不断的给 A 传送,所以 TCP 给发送方和接收方设计了两个序号:

        发送序号(seq)和 接收序号(ack)。

        各端的发送序号其实就是对方的接收序号。

        TCP 协议头

        源端口:描述发送方机器上的应用。

        目标端口:描述接收方服务器上的应用。

        发送序号(Seq)和接收序号(Acq),每个序号是32个字节,32位最大到 40e,可以支持很长时间传输。

       TCP 头-标志位

        在 TCP 协议里面有9个标志位:

        NS、CWR、ECN: TCP 扩展协议。

        ECN:显示拥塞控制协议,有助于帮助解决延迟和丢包问题。

        URG:紧急标志位,如果有一个数据的标志位被置为1了,代表这是一个紧急数据,这种紧急数据是需要优先处理的。

        SYN:Synchronize Sequence Numbers 同步序号,也就是建立连接

        FIN:终止连接

        ACK:Achnowledgment 响应

        PSH:push 传送数据

        RST:Reset Connection 重置连接

       TCP 协议周边配置

        TCP 可以通过流控协调两边速率保证数据可靠性;通过拥塞控制能力帮助确定网络中用户情况来决定传输速度。

        TCP 纠错能力:TCP 拥有一个 16 bit 的 Checksum 字段,Checksum 是一个函数,把原文映射到一个不可逆的 16 bit 的编码中这样就可以知道原文在传输过程中有没有发生变化。

        TCP 流控能力:让发送方和接收方协商一个合理的收发速率,让两边都可以稳定的工作,流控能力利用的是滑动窗口,就是 TCP 报文拆分里面的时间窗口。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5697245.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存