图解:一句“我喜欢你”在网络中经历了什么

写在前面

提起计算机网络,想必给大家的印象就是协议,学了就忘,其实我也一样,但是他的重要性,很是值得学习,不管你是学Java、Python、C++等,这门计网课都是很有必要学习的,最近通过阅读一些书籍,文章等,对计网做一个系统的总结,希望可以帮助到大家,后续会持续更新。

计网的体系结构

在讲解计网体系结构之前,我们先说一个问题,计网体系结构为什么要分层管理呢,分层的好处是什么呢?其实分层也就是为了好管理,每一层只需要负责本层的事情,层与层之间,只需要提供一个接口即可,这样不仅提高了扩展性,而且也降低了维护成本。我们常见的体系结构有三种,分别是OSI体系结构、TCP/IP体系结构和五层体系结构。

那么问题来了,有这么多的体系结构,哪一种好呢,首先说说OSI体系结构,该体系结构是由国际标准化组织制定的标准,只能说,他分的挺详细的,但是过于复杂而且不实用。再说说TCP/IP体系结构,该体系结构为了将不同网络接口互连,使得网络接口层并没有规定什么具体的内容,所以不太适合去学习,于是来了个OSI和TCP/IP的结合体——五层体系结构,他综合了二者的优点。在对这五层体系结构进行讲解之前,先讲解一下网络中常用的三种交换方式。

交换方式

首先我们需要搞明白,计算机之间的通讯,是如何实现数据交换的,其实有三种常见的交换方式。一、电路交换,二、报文交换,三、分组交换

说起电路交换,要先说说电话机了,如果2台电话机需要通信,需要一根电话线,而5台电话机两两通信需要20根电话线,随着电话机的增多,电话线成指数级别增加(n*(n-1)/2),也正是这个原因,出来了电路交换来解决此问题。

通过一个电话交换机来进行转发,这样就减少了不少的电话线。当然了,并不是所有的电话都是通过一个交换机来进行转发的,其实是通过多个交换机互相协作才拨通的电话。

其中电路交换,需要经历三个过程,首先是建立连接,其次是数据传输,最后是释放连接(交换机之间是用中继线连接的,是公用的)。看似简单的一个通话,中间可是经历了不少历程,所以听到铃声响起,可不能轻易挂掉了。

报文交换的话,是不需要建立连接的,直接以报文的形式发送到相邻节点的交换机,直到目的节点,目的节点通过查表进行转发,报文的大小是没有限制的,所以需要各个节点有较大的缓存空间。

分组交换就恰好能解决分组交换的需要较大缓存空间的问题,把一个报文进行分组转发,这样各个节点就不用太大的缓存空间了,而且分组之后,可以通过不同的路线传输数据,提高传输效率,鱼和熊掌不可兼得,同时也引入了新的问题,就是当把一个报文进行分组之后,那么接受放怎么进行拼接呢,所以需要给分组加上首部标识,这样以来,传输的数据量就有所增加了,不过相对其优点,这点缺点还是可以接受的。

发送消息

介绍了三种交换方式,下面可以说说重头戏了,也就是A给B发送一句“我喜欢你”为例,A代表浏览器,B代表服务器。当A发送请求的时候,首先通过应用层,应用层将信息封装成一个HTTP请求报文,交给传输层。

上图是HTTP请求报文的通用格式,在我们互联网中传输的时候的格式一般如下。

传输层加上TCP首部,封装成TCP报文段(可用来区分应用进程并实现可靠传输),交给网络层。

网络层给TCP报文段加上IP首部,封装成IP数据报(可在互联网上传输,即被路由器转发),交给数据链路层。

数据链路层添加首部和尾部,将其封装成(可被目的主机接收,并检查),数据链路层将帧交给物理层。

物理层将帧看作比特流,并添加前导码,然后转化为相应的信号在传输媒体上传输。

当碰到一个路由器之后,物理层首先去掉前导码,将其交付给数据链路层,数据链路层去掉帧的首部和尾部,将其交付给网络层,网络层解析IP数据报的首部,解析其目的地址并进行转发,网络层将IP数据报交给数据链路层,数据链路层添加首部和尾部,将其封装成帧,数据链路层将帧交给物理层,物理层将帧看作比特流,并添加前导码。

然后到达服务器,服务器从物理层开始解析,首先去掉前导码,然后去掉首部尾部,然后去掉IP首部,然后去掉TCP首部,最后在应用层接收到HTTP请求报文。

应用层对HTTP请求报文进行解析,然后发出响应报文,报文内容:我们不合适(该过程与发送过程类似)。

终究还是一个人扛下所有。。。
参考文献
[1] 计算机网络自顶向下方法.陈铭 译.机械工业出版社
[2] 湖科大教书匠.计算机网络微课堂.哔哩哔哩

写在后面

这里通过一句“我喜欢你”,把数据在网络中的传递过程进行了一个描述,一些细节问题,后续章节会详细介绍,我们下期再见~

猜你喜欢

转载自blog.csdn.net/HeZhiYing_/article/details/113822686
今日推荐