赞
踩
1:解析是那个协议->判断是ip地址还是域名->DNS缓存(浏览器缓存、host文件)->DNS查询->TCP握手->HTTP请求->反向代理nginx->uwsgi/gunicorn->web-app响应->TCP挥手
2:这个过程会从应用层(Http协议、Https协议)-传输层(TCP协议)-网络层(ARP协议,IP协议,ICMP协议)-数据链路层-物理层。
3:应用层:
传输层:
网络层:
注:ARP协议为IP协议提供服务,IP协议为ICMP协议提供服务
答:TCP握手两次可能会出现浪费资源的情况,当服务端发送回应答报文后,若是两次握手,那么服务端此刻进入了ESTABLISHED的连接状态,可以发送数据给客户端,但是当这个应答报文中途丢失,客户端并没有接收到这个报文,就会再次发送请求连接报文给服务端,而服务端就会再次新建连接状态,就浪费了上一次开启连接的资源。
幂等:多次请求结果是一样的
安全性:对服务器是否有改变
答:
序列号字段
CP序列号(Sequence Number):占 32 位。它表示本报文段所发送数据的第一个字节的编号。在 TCP 连接中,所传送的字节流的每一个字节都会按顺序编号。当SYN标记不为1时,这是当前数据分段第一个字母的序列号;如果SYN的值是1时,这个字段的值就是初始序列值(ISN),用于对序列号进行同步。这时,第一个字节的序列号比这个字段的值大1,也就是ISN加1。
确认号字段
TCP 确认号(Acknowledgment Number,ACK Number):占 32 位。它表示接收方期望收到发送方下一个报文段的第一个字节数据的编号。其值是接收计算机即将接收到的下一个序列号,也就是下一个接收到的字节的序列号加1。
答:
答:
答:tcp是面向连接的、点对点的、可靠支付、面向字节流、提供全双工通信的、首部开销大(20字节)
udp是面向无连接的,尽最大努力交付的,面向报文、没有拥塞机制,首部开销大(8字节)
答:确认丢失和重传机制
确认丢失指在设定的超时重传的时间内没有收到确认,就认为字节发送的分组出错,重新发送,应答端此时接收到这个报文,重复接收就丢弃不处理,不重复就向上传输,但是都要发送确认报文。发送方也一样
答:流量控制:利用滑动窗口来进行限制,A向B发送数据,在建立连接时,B告诉A我的接收窗口rwnd=400,告诉发送方可以发送的总数据字节的长度,从而实现流量控制,当为0的时候就不能再发送了。
拥塞机制的原因:我们知道TCP通过一个定时器(timer)采样了RTT并计算RTO,但是,如果网络上的延时突然增加,那么,TCP对这个事做出的应对只有重传数据,然而重传会导致网络的负担更重,于是会导致更大的延迟以及更多的丢包,这就导致了恶性循环,最终形成“网络风暴” —— TCP的拥塞控制机制就是用于应对这种情况。
拥塞避免:https://blog.csdn.net/shuxnhs/article/details/80644531
https://www.cnblogs.com/-wenli/p/13095371.html
答:A发送断开连接请求,进入终止等待状态,B接受到请求,发送收到确认,进入关闭等待状态,此时处于半关闭(close_wait)状态,A没有数据发给B,但是B可以发送给A数据,A收到B的确认后,就进入终止等待(half_close)的状态,等B处理完所有的数据,就发送连接释放报文给A,进入最后确认状态,A收到后发送确认,进入时间等待状态,B收到确认后就关闭连接,A等待2个MSL时间后没有收到重传就关闭连接了。
答:TCP三次挥手,那么在第三次的时候,如果服务器释放连接的请求没有能正常到达客户端,那么客户端就不能一直释放资源,导致浪费资源。如果客户端在第二次的时候就关闭了连接,那么服务端的数据就不能完整的发送完给客户端。
答:一个报文的最大存活时间,确保服务端的确收到了客户端的确认报文
答:可以连续发送报文而不需要等待确认报文到达,接收方接收到会把滑动窗口往后滑动,如果发送方有一个报文缺失,接收方接受到下一个报文会重复发送这个缺失的报文,直到接受到这个报文。若接收方接受到的报文其中一个缺失了,但是下一个报文收到了,就不会重复发送。因此很大一个缺点就是浪费,后面正确的报文没有缓存,也有选择重传机制,保留收到的报文到缓冲区,但是会导致乱序,因此需要排序
答:从HTTP/1.1开始默认使用长连接。使用长连接的HTTP协议会在响应头加入Connection: keep-alive。当打开一个网页客户端和服务端建立的TCP连接不会关闭。当再次访问服务器时还会使用这个连接。
答:time_wait产生的原因是主动方发起TCP挥手的一方在最后发送确认报文后进入的状态,这个状态下依然保存了TCP连接的四元组,导致占用端口不可用,而过多将会导致很多端口不可用,占用太多资源,因此可以设置SO_REUSEADDR来让端口可以重用,对于出于time_wait状态的端口可以使用。
注:就算黑客自己也申请了证书并截取了服务端的证书,伪造假证书发给客户端,但是证书的生成过程包括了网址等信息,很容易验证出是非法来源。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。