文章目录
  1. 1. 网络通信
    1. 1.1. 网络进程间通信
    2. 1.2. TCP/IP协议族
    3. 1.3. TCP协议
    4. 1.4. DNS
    5. 1.5. 参考
  2. 2. 结束语

《纯前端的进军》系列主要作为曾经的纯前端,对后台和底层的一些弥补,涉及进程、网络通信,以及对node.js和相关框架的学习。这一节我们来补充网络通信和TCP、IP协议、DNS相关知识。

网络通信


前面一节我们学习了进程、线程等,以及进程之间的通信,这节我们来了解一下网络通信。

网络进程间通信

网间进程通信要解决的是不同主机进程间的相互通信问题(可把同机进程通信看作是其中的特例)。为此,首先要解决的是网间进程标识问题。
同一主机上,不同进程可用进程号(process ID)唯一标识。但在网络环境下,各主机独立分配的进程号不能唯一标识该进程。

TCP/IP协议族可解决该问题:

  • 网络层的“ip地址”可以唯一标识网络中的主机
  • 传输层的“协议 + 端口”可以唯一标识主机中的应用程序(进程)

这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。

网络进程间通信,是需要依赖TCP/IP协议的,这里我们来简单介绍一下。

TCP/IP协议族

TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。
它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。协议套组下的各种协议,依其功能不同,被分别归属到这四个层次结构之中,常被视为是简化的七层OSI模型。

TCP/IP协议分层

  1. 数据链路层
    负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL等等。
  2. 网络层
    负责分配地址和传送二进制数据(选路线),主要协议是IP协议。
  3. 传输层(TCP/UDP)
    传输层负责传送文本数据,主要协议是TCP协议。
    传输层的协议,能够解决诸如端到端可靠性(“数据是否已经到达目的地?”)和保证数据按照正确的顺序到达这样的问题。
    在TCP/IP协议组中,传输协议也包括所给数据应该送给哪个应用程序。
  4. 应用层(FTP/DNS域名系统/HTTP协议等)
    负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是HTTP、FTP等。
    该层包括所有和应用程序协同工作,利用基础网络交换应用程序专用的数据的协议。

IP协议
主要内容是把各种数据包准确无误地传递,包括ARP协议、RARP协议等。

TCP协议

非可靠的UDP
UDP与TCP的主要区别在于UDP不一定提供可靠的数据传输。事实上,该协议不能保证数据准确无误地到达目的地。
UDP在许多方面非常有效。当某个程序的目标是尽快地传输尽可能多的信息时(其中任意给定数据的重要性相对较低),可使用UDP。QQ短消息使用UDP协议发送消息。

可靠的TCP
TCP的目的是提供可靠的数据传输,并在相互进行通信的设备或服务之间保持一个虚拟连接。TCP在数据包接收无序、丢失或在交付期间被破坏时,负责数据恢复。它通过为其发送的每个数据包提供一个序号来完成此恢复。

为确保正确地接收数据,TCP要求在目标计算机成功收到数据时发回一个确认(即ACK)。如果在某个时限内未收到相应的ACK,将重新传送数据包。即传说中的“三次握手”。
如果网络拥塞,这种重新传送将导致发送的数据包重复。但是,接收计算机可使用数据包的序号来确定它是否为重复数据包,并在必要时丢弃它。

三次握手
所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时,将触发三次握手:

images

完整的过程如下:

images

DNS

说到网络通信,又怎能少了DNS呢?
DNS的全称是Domain Name System。它负责把FQDN(就是以”.”分隔结尾的名字)翻译成一个IP。
让用户电脑和服务器(网页存放电脑)连接起来并不是靠域名进行,网络上计算机之间实现连接是通过每台计算机在网络中拥有的惟一的IP地址来完成的。

DNS速度优化是网站优化SEO中的一部分,优化DNS解析就必须了解DNS解析原理及过程。

当用户访问我们网站一个网页时,他需要经过以下步骤:

  1. 找到这个网页的存放服务器;
  2. 服务器将用户的请求信息接入;
  3. 服务器通过文件路径(URL)查找用户请求网页;
  4. 用户将该网页内容下载到自己电脑上。

我们所讲的DNS解析主要是第一个步骤,即让用户通过URL找到文件存放的服务器。

DNS解析主要有递归查询,就是在某个DNS服务器缓存中查找不到相应的域名与IP地址对应关系时,自动跳转到到下一步骤通过下一个DNS服务器进行查找。

参考

结束语


这一节主要进行了网络间通信以及TCP/IP协议,以及DNS的介绍,关于TCP/IP相关的有幸当年在第一家公司学过,虽然也忘得差不多了。

查看Github有更多内容噢:https://github.com/godbasin
更欢迎来被删的前端游乐场边撸猫边学前端噢

码生艰难,写文不易,给我家猪囤点猫粮了喵~

作者:被删

出处:https://godbasin.github.io

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

文章目录
  1. 1. 网络通信
    1. 1.1. 网络进程间通信
    2. 1.2. TCP/IP协议族
    3. 1.3. TCP协议
    4. 1.4. DNS
    5. 1.5. 参考
  2. 2. 结束语