开发者必须知道的网络基础知识这些协议需要协同工作才能完成。应用层,包括HTTP、TLS(SSL3.1)、DNS、Thrift、FTP等传输层、TCP(传输控制协议)、UDP(用户消息协议)网络层、IP(网际协议)链路层、ARP(地址解析协议(AddressResolutionProtocol)物理层,与硬件的关系比较密切,所以不需要过多关注程序运行的过程图2.网络通信的过程TheprocessofnetworkcommunicationWhen程序中发送HTTPS请求,数据经过每一层的处理,最终到达目标地址,描述了每一层处理的主要部分,程序中进行了步骤1、2、3,步骤4、5、6在操作系统内核中进行,第7步由硬件设备完成,下面逐一详细说明:DNS解析将域名转换为IPv4或IPv6地址,依赖于在UD上P协议向DNS服务器发送查询请求并获取响应信息。HTTP报文由程序中的httpclient工具生成,包含用户设置的HTTP相关参数(URL、header、body等)。TLS协议通过四次握手机制协商公钥/私钥。客户端生成一个“会话密钥”,由公钥加密后发送给服务器。服务器通过解密私钥得到私钥,最后使用“会话密钥”对HTTP报文进行加密。TCP连接是通过三次握手机制建立的,HTTP报文以字节流的形式写入,发送的数据需要经过“发送-确认”过程,以保证完全送达指定的IP地址。IP数据包根据MTU大小拆分字节流,在局域网中通常为1500字节,在互联网中为512字节。IP数据包的包头信息中记录了发送方IP和接收方IP。发送MAC帧时,实际上并不能直接发送到指定的IP地址。内核需要根据路由表中记录的信息,通过“IP地址和子网掩码”进行“与”运算(查看本地路由表的命令route-n)。"获取下一跳的网关IP。然后,链路层通过ARP协议(本地ARP缓存表检查命令arp-a)获取网关IP的MAC地址,并将发送方MAC地址和网关MAC封装起来2.关键的外部服务上一节描述的网络通信过程需要各种外部服务的参与,包括DNS服务、CA服务、路由器和ISP服务。1、DNS服务DNS服务器由DNS服务提供商管理,提供根据域名查询IP地址的服务。常见的DNS服务商有中国电信(114.114.114.114)和谷歌(8.8.8.8)。在Linux系统中,文件在/etc/resolv.conf和目录/etc/sysconfig/network-scripts/下,使用cat命令查看配置的DNS服务器IP地址。2、CA签发和验证服务CA服务器提供TLS协议中要求的证书签发服务,在TLS的四次握手过程中,通过CA服务验证服务器提供的证书是否可信。浏览器内置了各种CA服务器的地址,也可以在本地配置证书进行验证(例如:12306.cn需要在浏览器中安装私有证书)。3、路由器路由器是个人电脑向因特网发送IP数据包的第一道关口。路由器具有有关相关ISP服务器的内置信息。4.ISP服务器ISP(InternetServiceProvider)Internet服务提供商(如:中国电信、中国联通)是网络服务的关键角色。ISP服务器的作用与路由器的作用相同。它们为数据链路记录了巨大的路由表。要查询的图层。当我们想要将我们的服务器连接到Internet时,我们需要向ISP支付注册费用。本质就是把我们服务器的路由信息??添加到ISP服务中(实际上还涉及到光纤建设等物理层实现,这里不再赘述)。
