为了账号安全,请及时绑定邮箱和手机立即绑定

【九月打卡】第11天 经典网络协议与数据包

标签:
Go

课程名称:(打造简历金牌项目)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三次握手,四次挥手,流量控制,拥塞控制等,加深了我对计算机网络的理解。

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
1
获赞与收藏
1

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消