课程名称:(打造简历金牌项目)Vue+Go 开发企业级微服务网关项目
课程章节:第二章
课程讲师:牛儿吃草
课程内容
HTTP协议
GET /HTTP/1.1
HOST www.baidu.com
User-Agent: curl/7.55.1
Accept: */
HTTP/1.1 200 OK
Accept-Ranges bytes
Cache-Control: private,no-cache,no-store,proxy-revalidate,no-transform
Connection: keep-alive
Content-Length: 2381
Content-Type: text/html
WebSocket 握手协议
Get /chat HTTP/1.1
Host: server.example.com
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHN…==…
…
TCP为啥需要三次握手以及四次挥手?
三次握手的最主要的目的是保证连接是双工的,可靠更多的是通过重传的机制来保证的。(双工是指数据发送和接收是可以同时执行的,并且连接的双方都可以进行发送和接收)
因为连接是全双工的,所以双方必须都收到对方的FINISH包以及确认才可以关闭。所以才有了四次挥手。
为啥time_wait要等待2MSL?
MSL:Maximum Segument Lifetime,30秒——1分钟
保证TCP协议的全双工连接能够可靠关闭
保证这次连接的重复数据段从网络中消失
为啥会出现大量的close_wait?
首先close_wait一般出现在被动关闭方。
并发请求太多导致。(如果发送大量的请求,然后服务端对应的间隙的数据处理时间没有跟上它这个并发,就会出现一个close_wait状态)。
被动关闭方没有及时释放端口导致。
TCP——流量控制(UDP不需要)
因为UDP是一种非连接的一种不可靠的通讯,所以在UDP上每一次发送都需要绑定一个IP和端口,但发送出去之后就不需要确认了,也就是不需要进行三次握手,流量控制和拥塞控制也就不需要了
由于通讯双方,网速不同。通讯方任意一方发送过快都会导致对方消息处理不过来,所以就需要把数据放到缓冲区当中。
如果缓冲区满了,发送方还在疯狂发送,那接收方只能把数据包丢弃,因此我们需要控制发送速率。
我们缓冲区剩余大小称之为接收窗口,用变量win表示。如果win=0,则表示发送方停止发送。
TCP为啥需要拥塞控制?
流量控制和拥塞控制是两个概念,拥塞控制是调节网络的负载。
接收方的网络资源繁忙,因未及时相应ACK导致发送方重传大量数据,这样将会导致网络更加拥堵。
拥塞控制是动态调整win的大小,不只是以来缓冲区大小,确定窗口大小。
TCP拥塞控制
慢开始和拥塞避免
快速重传和快速恢复
课程收获: 感谢老师讲解了经典的网络协议,包括经典协议与数据包,HTTP,WebSocket等等,以及TCP三次握手,四次挥手,流量控制,拥塞控制等,加深了我对计算机网络的理解。
共同学习,写下你的评论
评论加载中...
作者其他优质文章