互联网和传输层协议

蜂窝移动网络

网络的组成

多个节点构成小型网络,小型组成中型,再到大型…

公司内网

公司网络从本地网络提供商(ISP)接入,内部再划分子网。之间的线路称为通信链路(Communication Link),用于传输网络信号,部分节点同时接入多个链路,路径发生分叉,数据传输到该节点需要选择方向,所以在这些节点间需要进行交换(Switch)

数据发生交换,会从一条链路进入交换设备,再转发到另一条链路

交换技术的本质:数据切换路径,网络中的数据是以分组或分包(Packet)进行传输。交换技术也称作封包交换技术(Packet Switch)

网络中,常见的具有交换能力的设备是路由器(Router)和链路层交换机(Linker-Layer Switch)
两个网络可通过路由器连接
多个设备可通过交换机连接
路由器也具有交换功能

公司内部网络被划分为多级子网。
每个路由器、交换机构成一级子网。
最高级的路由器处于公司网路边缘,可以将网络内部节点连接到其他网络(外部网络)。
ISP提供的互联网先到达边缘的路由器,然后传达内部的网络节点。
公司内部的服务器可通过交换机形成局域网;公司内部设备也可通过路由器或交换机形成局域网。
局域网之间可通过路由,交换机进行连接,从而构成更大的局域网

移动网络

通信链路是抽象的概念,具体形式可以是同轴电缆、无线信号的发送接收器、蓝牙信道…

移动网络中,无线信号构成通信链路,通信核心是蜂窝塔(Cellular Tower),也称作基站(Base Station)
基站的网络覆盖范围是六边形,许多网络拼接,形状类似蜂窝。六边形的结构可以让信号无死角的覆盖(圆形则不行)

国家或全球网络提供商供给处于蜂窝网络边缘的路由器
路由器连接蜂窝塔,再通过蜂窝塔(基站)提供给处于六边形地区中的设备

国家级别的网络服务提供商负责部署基站

网络提供(Network Provider):提供商将网络提供给一个子网的行为
网络接入(Network Access):子网连接提供商的网络


基站重叠

好处:当一个基站过载、出现故障,或者用户设备周边信号不稳定,可以切换到另一个基站的网络,不影响用户继续使用网络服务

边缘计算

在一定范围区域内,距离用户较近的地方部署服务器,帮助用户完成计算,相当于计算资源下沉,称为边缘计算
好处:相比中心化的计算,边缘计算延迟低、链路短、算力强,能够提升距离边缘计算集群最近的节点的用户体验

家用网络

家用网络已发展成网格状的连接,家用网络会通过路由器接入本地ISP的网络服务。一些设备可以直接和路由器连接

路由器充当了链路层网关,作为家用电器间交换信息的设备

蓝牙控制:智能音箱冲淡蓝牙设备的控制器,将家用网络带向网格状

整体关系

最顶部的全球或国家大型ISP之间联网,构成网络的主干。
区域性的ISP承接主干网络,在此基础上向家庭和公司提供接入服务
蜂窝网络因部署复杂,一般由大型ISP提供


数据的传输

网络中重要的抽象

终端(Terminal):或称端系统(End System)简称为主机(Host)。比如说:电脑,手机…都可看作主机

端到端(Host-to-Host)的网络传输,由TCP/IP协议群提供

广播(Broadcast)能力,是一对多、多对多的能力,可看作端到端能力的延申

主机间发送消息,中间穿越大量节点(由路由器、交换机、基站等组成),在发送消息过程中,可能跨越很多网络、经过很多边缘,也可能通过不同的ISP网络、使用不同材质的通信链路

网络基础设施不能一次性传输大量数据,会将数据分片存储,每个组称作一个封包(Packet)。一个封包损坏,只需重新发送损坏封包,无需重发所有数据

网路中两点间路径非常多,若一条路径堵塞,封包可以选择其他路径。发送端将数据拆分成封包,在网络中遇到分叉,由路由器和交换机决定走向

计算机网络是优秀的分层设计、精密的模块组装、准确的数值运算等一系列设计思想、工程方法的集合



TCP为什么是三次握手、四次挥手

TCP和UDP是应用最广泛的传输层协议

TCP协议

传输控制协议(Transport Control Protocol),是一个传输层协议,提供 Host-to-Host 数据的可靠传输,支持全双工,是一个连接导向的协议


主机到主机 Host-to-Host

TCP 提供的是 Host-to-Host传输,一台主机通过TCP发送数据给另一台主机。主机是一个抽象,可以是手机、电脑等收发数据的设备,双方是平等

TCP/IP 5层模型

在这里插入图片描述

应用到应用 Application-to-Application

TCP协议往上是应用到应用(Application-to-Application)的协议

像钉钉的聊天协议就是应用到应用的协议,若钉钉的聊天协议想要工作,需要Host-to-Host协议支持实现通信

TCP上层有很多应用,TCP上层的应用协议使用TCP能力时,需要告知TCP是那个应用,需要 端口号 用于区分应用

TCP要实现主机到主机间通信,需要知道主机的网络地址(IP地址),但TCP不负责实际 地址到地址(Address-to-Address)的传输。因此TCP协议把IP地址给底层的互联网层处理


互联网层(Network Layer)

也称网络层(Network Layer),提供地址到地址的通信

IP协议处于这一层,互联网层解决地址到地址的通信,而不负责信号在两个设备间传递。

网络层会调用下方的链路层在两个相邻设备间传递信息。

当信号在两个设备间传递的时候,由物理层封装最底层的物理设备、传输介质等。由最下方的物理层提供底层的传输能力

上述五层架构称为互联网协议群,也称 TCP/IP协议群

主机到主机(Host-to-Host)为应用提供应用间通信的能力


连接与会话

连接(Connection)

是数据传输双方的契约,让两个通信中的程序产生默契,保证两个程序均在线,且尽快地响应对方的请求,就是连接(Connection)

连接是一种传输数据的行为。传输之前,建立一个连接。具体来说,数据收发两方的内存中都建立一个用于维护数据传输状态的对象,像IP和端口、现在发送多少数据、健康状态、传输速度… 连接是网络行为状态的记录

会话(Session)

是应用的行为,比如钉钉中的聊天窗口就是会话。打字开始传输数据,与钉钉服务器建立连接,聊一段时间后,断开连接,因为聊天窗口没有关闭,会话依然存在

有些系统设计中,会话会自动重连(重新创建连接),或者帮助创建连接。此外,会话也负责在多次连接中保存状态,比如Http Session在多次Http请求(连接)间保持状态(如用户信息)

会话是应用层的概念,连接时传输层的概念


双工/单工

单工

任一时刻,数据只能单向发送,单工至少需要一条线路

半双工

某个时刻,数据可以向一个方向传输,也可以反方向传输,且交替执行,半双工至少需要一条线路

全双工

任一时刻,数据可以双向收发,全双工需要大于1条线路

线路是一个抽象概念,可以并发处理信号,来模拟双工

TCP是一个双工协议,数据任意时刻都可以双向传输。
意味着客户端和服务端可以平等地发送与接收消息
所以,客户端与服务端在TCP协议中可平等地称作——主机(Host)


可靠性

是保证数据无损传输,发送方按序发送数据,数据在网络间无序传递,必须有一种算法,让接收方将数据恢复至原有的顺序

另外,若发送方同时将消息发给多个接收方(多播),可靠性要求每个接收方均无损收到相同副本

多播的强可靠性:若一个消息到达任何一个接收者,那么所有接收者都必须收到这个消息(本文基于单播讨论可靠性)


TCP的握手与挥手

TCP是连接导向的协议,设计有连接(握手)和断开连接(挥手)过程,TCP没有设计会话(Session),会话是应用的行为

TCP协议的基本操作

1、若一个 Host 主动向另一个 Host 发送连接,称为SYN(Synchronization),请求同步
2、若一个 Host 主动断开请求,称为 FIN(Finish),请求完成
3、若一个 Host 给另一个 Host 发送数据,称为PSH(Push),数据推送

上述三种情况,接收方收到数据后,都需要给发送方一个ACK(Acknowledgement)响应。请求/响应的模型是可靠性的要求,若一个请求没有响应,发送方会认为需要重发请求

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

因为要保持连接和可靠性约束,TCP协议要保证每一条发出的数据必须给返回,返回的数据称作ACK(响应)

在这里插入图片描述

1、客户端发消息给服务器(SYN)
2、服务端准备好进行连接
3、服务端针对客户端的SYN给一个ACK

两次握手是不够的,因为没有确认客户端是否准备好,
假如步骤3之后,服务端马上给客户端发送数据,可能这个时候客户端还没有准备好接收数据,
因此还需要增加一个过程

4、服务端发送一个SYN给客户端
5、客户端准备就绪
6、客户端给服务端发送一个ACK

六个步骤、三次握手

步骤1:第一次握手
步骤2:服务端准备,不是数据传输,不是握手
步骤3和4:同时发生,可以合并为一个SYN-ACK响应,作为一条数据传递给客户端,是第二次握手
步骤5:不是握手
步骤6:第三次握手

SYN-ACK合并后:
在这里插入图片描述

SYN、ACK、PSH等标识位(Flag)在传输中的表示

为TCP协议增加协议头,取多个位(bit)表示。
其中SYN,ACK,PSH都占有一个位。SYN位的1表示开启,0表示关闭
SYN-ACK就是SYN和ACK位都为1,这种设计称为标识(Flag)

断开连接(四次挥手)

1、客户端要求断开连接,发送一个断开的请求,叫做(FIN)
2、服务端收到请求,然后给客户端一个ACK,作为FIN的响应
3、服务端经过等待,确认可关闭连接,发送FIN给客户端

服务端不能马上传FIN,因为断开连接需要处理的问题较多,比如服务端可
能还有发送出去的消息没有得到ACK;也有可能服务端有资源需要释放

4、客户端收到服务端的FIN,客户端处理完成事情后,给服务端发送一个ACK

客户端也有可能有自己的事情需要处理完,比如客户端有发送给服务端没有收到ACK的请求,

在这里插入图片描述

总结

1、TCP提供连接,让双方的传输更加稳定、安全
2、TCP没有直接提供会话,因为应用对会话的需求多样
会话通常在TCP连接上进一步封装,在应用层提供
3、TCP是一个面向连接的协议,TCP协议参与的双方在收发数据之前会先建立连接
4、连接需要消耗更多资源,要针对场景选择连接导向的协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值