前端阶段性总结之「网络协议基础」
更新日期:
该篇主要整理网络协议相关的概念,包括TCP/IP、DNS、HTTP等等基础认识。
网络协议
TCP/IP协议
TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。
它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。协议套组下的各种协议,依其功能不同,被分别归属到这四个层次结构之中,常被视为是简化的七层OSI模型。
可参考Wiki-TCP/IP协议族。
TCP/IP协议分层
- 数据链路层:用来处理连接网络的硬件、设备驱动、网卡、光纤等
- 网络层:用来处理在网络上滚动的数据包(选路线)
- 传输层:TCP/UDP
- 应用层:FTP/DNS域名系统/HTTP协议等
IP协议
- 把各种数据包准确无误地传递
- ARP惬意、RARP协议等
TCP协议
- 可靠传输(对比UDP):确认数据送达,把数据安全可靠传输
- 三次握手:建立一个TCP连接需要客户端和服务端总共发送三个包以确认连接存在
- 四次挥手
可以参考《TCP三次握手四次挥手详解》
DNS域名系统
让用户电脑和服务器(网页存放电脑)连接起来并不是靠域名进行,网络上计算机之间实现连接是通过每台计算机在网络中拥有的惟一的IP地址来完成的。
DNS的全称是Domain Name System。它负责把FQDN(就是以”.”分隔结尾的名字)翻译成一个IP。
DNS速度优化是网站优化SEO中的一部分,优化DNS解析就必须了解DNS解析原理及过程。
当用户访问我们网站一个网页时,他需要经过以下步骤:
- 找到这个网页的存放服务器;
- 服务器将用户的请求信息接入;
- 服务器通过文件路径(URL)查找用户请求网页;
- 用户将该网页内容下载到自己电脑上。
我们所讲的DNS解析主要是第一个步骤,即让用户通过URL找到文件存放的服务器。
DNS解析主要有递归查询,就是在某个DNS服务器缓存中查找不到相应的域名与IP地址对应关系时,自动跳转到到下一步骤通过下一个DNS服务器进行查找。
HTTP协议
关于HTTP协议相关的,需要了解和学习的太多太多了,这里本骚年先大概讲讲相关的,后面有空再进行深入分享。
通常,由HTTP客户端发起一个请求,建立一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端发送过来的请求。一旦收到请求,服务器(向客户端)发回一个状态行,比如”HTTP/1.1 200 OK”,和(响应的)消息,消息的消息体可能是请求的文件、错误消息、或者其它一些信息。
HTTP使用TCP而不是UDP的原因在于(打开)一个网页必须传送很多数据,而TCP协议提供传输控制,按顺序组织数据,和错误纠正。
HTTP协议的主要特点可概括如下:
- 支持客户/服务器模式。
- 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
- 无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
- 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
具体的请求、相应等等,后面一章会讲解,这里就大概讲个理解吧。
这里有篇超详细的讲解:《HTTP协议详解(真的很经典)》。
代理与反代理
代理
- 用户希望代理服务器帮助自己,和要访问服务器通信,为了实现此目标,需要以下工作:
- 用户IP报文的目的IP = 代理服务器IP
- 用户报文端口号 = 代理服务器监听端口号
- HTTP 消息里的URL要提供服务器的链接
- 代理服务器可以根据以上链接与服务器直接通信
- 服务器返回网页
- 代理服务器打包网页,返回用户
- 用户希望代理服务器帮助自己,和要访问服务器通信,为了实现此目标,需要以下工作:
反向代理
- 反向代理的实现
- 需要有一个负载均衡设备来分发用户请求,将用户请求分发到空闲的服务器上
- 服务器返回自己的服务到负载均衡设备
- 负载均衡将服务器的服务返回用户
在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的用户请求,这些服务器提供相同的服务,对于用户来说,根本感觉不到任何差别。
- 反向代理的实现
结束语
这里面只讲述最简单的一些概念和认识,作为前端,http相关的还是需要深入理解的呢,后面我们也会一点点补充讲述一下。
码生艰难,写文不易,给我家猪囤点猫粮了喵~
查看Github有更多内容噢:https://github.com/godbasin
更欢迎来被删的前端游乐场边撸猫边学前端噢
如果你想要关注日常生活中的我,欢迎关注“牧羊的猪”公众号噢