8.5 网络通信基本原理与性能优化
1.Web请求的一次网络通信历程
解析:1.客户端发起Web应用请求----------------HTTP请求(包含域名:域名比较稳定)。
2.域名解析:域名解析为IP地址------------IP为CDN服务器地址。
3.如果CDN没有缓存静态内容,请求转发到负载均衡服务器。
4.。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
2.OSI七层模型和TCP/IP四层模型
3.网络数据包格式:
英文式描述地址:从小到大。
mac(物理地址)<----------IP(逻辑地址)<---------端口(门牌号)<------------做什么<----------应用数据
4.物理层
物理层负责数据的物理传输,计算机输入输出是01二进制数据,但是在真正的网络线路里有光纤,电缆,无线各种设备。
光信号,电信号以及无线电磁信号在物理上是完全不同的,如何能让这些不同的设备能够理解,处理相同的二进制数据,这就是物理层要解决的问题。
5.链路层
链路层是将数据封装后交给物理层进行传输,主要是指将数据封装成数据帧,以帧为单位通过物理层进行通信,
有了帧,就可以在数据帧上进行数据校验,以帧为单位进行流量控制。
链路层定义帧的大小,这个大小也被称作最大传输单元。像HTTP要在传输的数据上添加HTTP头一样,数据链路层也会将封装好的帧添加一个帧头,
枕头里记录的一个重要信息就是发送者和接受者的MAC地址。MAC地址就是网卡的设备标识符,是唯一的,数据帧通过这个信息确保数据送达到正确的目标机器。
6.链路层负载均衡
7.网络层
网络层IP协议:使得互联网应用根据IP地址就能访问目标服务器,请求离开App后,到达运营服务商的交换机,交换机会根据这个IP地址进行路由转发,可能中间会经过很多个转发节点,最后到达目标服务器。
网络层的数据需要交给链路层处理,而链路层帧的大小定义了最大的传输单元,网路层的IP数据包必须要小于最大传输单元才能网络传输,这个数据包也有一个IP头,主要包括的就是发送者和接受者的IP地址。
7.1.IP负载均衡
8.传输层(TCP协议)
IP协议不是一个可靠的通信协议,不会建立稳定的通信链路,并不会确保数据一定会送达。要保证通信的稳定可靠,需要传输层协议TCP。
TCP协议是一种面向连接的,可靠的,基于字节流的传输层协议,TCP作为一个比较基础的通讯协议,有很多重要的机制保证了TCP协议的可靠性和强壮行。
使用序号,对收到的TCP报文段进行排序和检测重复数据。
无措传输,使用校验和检测报文段的错误。
使用确认和计时器来检测和纠正丢包后者延时。
流量控制,避免主机分组发送得过快而是接收方来不及完全收下。
拥塞控制,发送方根据网络承载情况控制分组的发送量,以获得高性能同时避免拥塞崩溃
丢失包的重传。
TCP建立连接的三次握手过程:
1.App先发送SYN=1,Seq=X的报文,表示请求建立连接,X是个随机数。
2.服务器收到这个报文后,应答SYN=1,ACK=X+1,Seq=Y的报文,表示同意建立连接。
3.App收到这个报文后,检查ACK的值为自己发送的Seq值+1,确认建立连接,并发送ACK=Y+1的报文给服务器;
服务器收到这个报文后,检查ACK值为自己发送的Seq值+1,确认建立连接。
至此,App和服务器建立TCP连接,就可以数据传输啦。
TCP关闭连接的四次挥手过程:
客户端向服务器端发送一个FIN,请求关闭数据传输。
当服务器端收到客户端的FIN时,向客户端发送一个ACK。
然后服务器向客户端发送一个FIN,高速客户端应用程序关闭。
当客户端收到服务器端的FIN时,恢复一个ACK给服务器。
9.应用层HTTP协议
而互联网应用需要在全球范围内为用户提供服务,将全球的应用和全球的用户联系在一起,需要一个统一的应用层协议,而这个协议就是HTTP协议。
:authority:s.taobao.com
:method GET
:path:/search?..
:schema:https
:accept:text/html
:accept-encoding:gzip
:accept-language:en-us
:cookie:a=b...
9.1.HTTP请求的7种方法
Get:只读请求,请求处理过程中不应该产生副作用,即Web应用不应该因为Get请求而发生任何状态改变。
Head:和get方法一样,但是只返回响应头。
Post:提交请求。
Put:上传请求。
Delete:删除URL表示的资源。
Trace:回显服务器收到的请求,用以测试或者诊断。
Options:请求服务器返回支持的所有的HTTP请求方法,测试服务器是否正常。
9.2.HTTP响应的5种状态
1XX消息-----------------------------------------------请求已被服务器接收,继续处理
2XX成功-----------------------------------------------请求已被服务器成功接收,理解并接受
3XX重定向---------------------------------------------需要后续操作才能完成这一请求
4XX请求错误-------------------------------------------请求含有词法错误或者无法被执行。
5XX服务器错误-----------------------------------------服务器在处理某个正确请求发生错误。
评论