1.个人的电脑是如何发送和接收到数据的
当我们的电脑接入互联网时,会被分配一个IP地址,现在B站的服务器也接入了互联网,它也会被分配一个IP地址(访问某个网站就是在访问那个网站的服务器)。此时如果我访问b站的首页,我就是客户端,bilibili服务器就是服务端。大致结构如下:
这种形式就是客户端服务端模型。更贴近用户的是客户端,如浏览器、电子邮件客户端、手机APP;客户端是在远程计算机上运行的应用程序。客户端可以在需要时与服务端进行通信。
客户端发送消息给服务器,我要获取首页的内容,消息会被转化成电子信号,通过电缆发送给bilibili服务器,在服务器端将电子信号转化为计算机可以识别的文本数据。这个将消息转化为电子信号,再将电子信号转化为计算机可以识别的文本数据是通过TCP/IP协议族(协议:是一组规则,用于指定计算机应如何通过网络来相互通信)实现的。
2.TCP/IP协议
分层:
- 应用层:
- 负责应用程序的协议。如负责浏览器和网络服务器相互通信的HTTP协议、负责文件传输的FTP协议、电子邮件传输的IMAP协议
- TCP传输控制层:
- 作用是发送数据包到计算机上使用特定端口号的应用程序
- 三次握手
- IP网络层:
- 使用IP地址将数据包发送到特定的计算机上
- 链路层:
- 负责将二进制数据包与网络信号相互之间转换
以请求一个html文本为例:
(1)客户端的TCP/IP协议族
说明:
- 以上为客户端的TCP/IP协议分层中,一个数据包在各层中是如何处理的
- IP是不可靠的无连接协议,并不关心数据包是否到达目的地,也不关心连接和端口号。 所以有可能会乱序到达目标地址,或者在传输途中丢失。当数据包过大时,在IP层会进行分包,由于每个数据包在物理链路层走的链路不一样,传输速度也不一样,会导致数据包没有按顺序到达目的地,但是TCP会根据数据包上携带的序列号来进行排列重组。并且发送方在一个特定时间内没有接收到接收方的ack确认时,则发送方会重新发送该数据包
(2)服务器端的TPC/IP协议族
说明:
- 以上就是服务器端接收到请求以后TCP/IP层所做的事情,就是客户端与服务器端的一次交互
3.互联网构成简介
互联网组成大致如下:
大致就是整个互联网由个人的PC以及互联网服务提供商(ISP)以及更上层的NSP(为ISP提供网络主干服务的公司)组成的大型网络。数据包就是在这个大型网络中进行的传输
(1)那互联网是如何帮数据包找到一个正确的路线,把数据包送到目的地的:
- 互联网中有个特殊的计算器—路由器,路由器上有个路由表,记录了其子网络的所有IP地址,但是它却不知道其上层网络的IP地址
- 当数据包到达路由器,路由器检查路由表上是否有目的地的IP地址,如果有就发送给那个网络,如果没有,就向上层发送数据,在更高的层级去寻找拥有该IP的路由器,如果依然没有找到,则再次将数据包向上路由,直到到达NSP主干网为止。连接到NSP骨干网的路由器拥有最大的路由表,通过这张表可以将数据包路由到正确的骨干网,然后开始向下传播,进入越来越小的网络,直到找到目的地为止,这就是你的电脑如何访问到bilibili服务器的。
(2)如何通过域名访问服务器的
上面是通过IP地址找到了对应的服务器,但是不可能记住所有的IP地址来访问某个网站。所以就有了域名。
这里就用到了Domain Names Service(DNS)。
DNS是一个分布式数据库,上面记录了域名和其IP地址的对应关系,在浏览器中输入网址时,浏览器首先连接DNS服务器,获取到该域名的IP地址后,浏览器再连接访问该IP的服务器,有了DNS后,之后服务器IP地址有了变化,重新绑定一下域名和新IP地址就可以了。