最新消息:阿里云双12优惠,史上最低折扣。

开发人员必须知道的网络基础知识

服务器租用 aliyun 210浏览

云服务器有哪些虚拟化技术?这可能是全网最好的文章了

虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。

一、五层网络模型

1. 主要的网络协议

以下每层列出的协议,都能够在代码或者操作系统中使用和管理,当程序进行网络通信时,需要由这些协议共同协作完成。

应用层,包括HTTP、TLS(SSL3.1)、DNS、Thrift、FTP等

传输层,TCP(传输控制协议)、UDP(用户报文协议)

网络层,IP(网际协议)

链路层,ARP(地址解析协议)

物理层,该层与硬件关系更为紧密,无需太过关注

 

程序运行过程图解

2. 网络通信的过程

网络通信的过程

在程序中发送HTTPS请求时,数据经过各层的处理,最终到达目标地址。对各层处理的主要部分进行了描述,其中第1、2、3步在程序中进行,第4、5、6步在操作系统内核中进行,第7步由硬件设备完成,下面对每一步进行详细描述:

DNS解析将域名转换为IPv4或IPv6地址,它依托于UDP协议向DNS服务器发送查询请求并获取响应信息。

HTTP报文由程序中的httpclient工具生成,包含用户设置的HTTP相关参数(URL、header、body等)。

TLS协议通过四次握手机制协商出公钥/私钥,客户端生成“会话密钥”由公钥加密发送到服务端,服务端通过私钥解密获取,最终使用该“会话密钥”对HTTP报文进行加密。

TCP连接通过三次握手机制建立,HTTP报文以字节流形式写入,发送的数据都需要经过“发送-确认”的过程,以保证其完整送达到指定IP地址。

IP数据包将字节流按MTU大小进行拆分,局域网内通常为1500字节,互联网通常为512字节。IP数据包的头信息上记录了发送者IP和接收者IP。

MAC帧在发送时,实际无法直接发送到指定的IP地址,需要内核根据路由表中记录的信息(本地路由表查看命令route -n),通过“IP地址与子网掩码”进行“与运算”得到下一跳的网关IP。然后,链路层通过ARP协议获取网关IP的MAC地址(本地ARP缓存表查看命令arp -a),将发送者MAC地址和网关MAC地址封装到MAC帧中。

二、关键的外部服务

上一节描述的网络通信过程,需要多种外部服务的参与才能完成,包括DNS服务、CA服务、路由器、ISP服务。

1. DNS服务

DNS服务器由DNS服务提供商进行管理,提供根据域名查询IP地址的服务,常见的DNS服务提供商有中国电信(114.114.114.114)和谷歌(8.8.8.8),Linux系统中在文件/etc/resolv.conf中和目录/etcc/sysconfig/network-scripts/下使用cat命令查看配置的DNS服务器IP地址。

2. CA颁发与验证服务

CA服务器提供了TLS协议中需要的证书颁发服务,在TLS进行四次握手时通过CA服务验证服务器提供的证书是否可信。浏览器内置了多种CA服务器的地址,并且也可以在本地配置证书进行验证(如:12306.cn需要在浏览器安装私有证书)。

3. 路由器

路由器是个人电脑发送IP数据包到互联网的第一道网关,路由器内置了相关ISP服务器的信息。

4. ISP服务器

ISP(Internet Service Provider)互联网服务提供商(如:中国电信、中国联通)是网络服务的关键角色,ISP服务器的作用与路由器相同,它们记录了庞大的路由表提供给数据链路层进行查询。当我们想要将自己的服务器接入到互联网中,需要付费给ISP进行注册,本质就是在ISP服务添加了自己服务器的路由信息(实际还涉及到光纤建设等物理层实施,这里不做描述)。

转载请注明:小猪云服务器租用推荐 » 开发人员必须知道的网络基础知识