网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(2)

简介: 网络协议报文理解刨析篇二(再谈Http和Https), 加上TCP/UDP/IP协议分析(理解着学习), 面试官都惊讶你对网络的见解(2)

拥塞控制

(滑动窗口)  大小决定   min( 接收窗口决定的 , 拥塞窗口决定  (发送方发送缓冲区大小))


why需要慢开始,最一开始发送方会将发送窗口(拥塞窗口的)设置的很小 ?

 

因为网络环境错综复杂,刚开始不清楚网络环境的好坏, 所以满开始就有点像是派个侦察兵去看看,网络环境咋样,然后再进一步调整拥塞窗口的大小   确定滑动窗口大小..


先探测一下当前的网络拥塞程度,然后由小到大的逐渐增大拥塞窗口的大小.


然后是指数级的扩张滑动窗口大小,但是也不能一直那样扩大下去,于是有一个阈值的概念,超过这个阈值又转变为线性增长了

当TCP开始启动的时候, 慢启动阈值等于窗口最大值


在每次超时重发的时候, 慢启动阈值会变成原来的一半, 同时拥塞窗口置回


少量的丢包, 我们仅仅是触发超时重传; 大量的丢包, 我们就认为网络拥塞;


当TCP通信开始后, 网络吞吐量会逐渐上升; 随着网络发生拥堵, 吞吐量会立刻下降


其实就是为了保证在不造成网络环境压力太大的情况下尽快将数据传输过去

TCP小结

  • TCP是面向连接的,可靠的,基于字节流的传输层通信协议
  • 如何保证可靠性:

  • 性能提升上面:
  • 1.  采取了滑动窗口
  • 2. 快速重传 (不需要等待超时,三次对端提醒之后自动重传)

基于TCP应用层协议 HTTP HTTPS SSH Telnet FTP SMTP

TCP最大连接数的分析(面试常考)(从四元组的角度入手)

客户端   和  服务器之间建立连接  :  只要确保客户端的 ip +  客户端的  port     两个中存在一个和服务端不同即可建立连接.....    


理论最大 : 最大TCP连接数目  =  客户端ip数目  *  客户端端口数目


ipv4而言理论ip 数目最多是   2 ^ 32   port  数目是  65535 = 2 ^ 16,   所以理论最大的TCP连接数目是    2 ^ 48


但是并发数目是万万不可能达到上述这么多的.    (考虑并发) 首先第一个就是文件描述符的限制  sockfd数量限制,当然这个可以在服务器中修改配置...       ulimit


还有就是内存的限制了,TCP存在发送和接收内核缓冲区, 你用户空间也还要开缓冲区,所以肯定是无法达到上述哪个恐怖的数目的

四. UDP协议

  • 先从报文分析入手

源端口号:  客户端端口号.


目的端口号:服务器端口号, 负责确定交付给哪个应用程序.


一个应用程序可以绑定多个端口号,但是一个端口号一定是对应一个应用程序.(端口号标识唯一应用程序)


16位UDP长度, 表示整个数据报(UDP首部+UDP数据)的最大长度


如果校验和出错, 就会直接丢弃


报头理解, 报头实现地方式, 使用C语言中地位段进行理解:  多少位分为一段

UDP的特征:  什么是无连接,不可靠,关键为什么它如此的不稳定但是在现在的短视频 音视频通话 DNS  ARP这些全部都还使用的是UDP作为传输层协议


首先是无连接, 连接是什么:   连接算是一端到另外一端的不存在的一根线 (抽象的来说,这个是我的个人理解, 连接的过程也就是三次握手的过程)对于三次握手不理解的可以看我前文链接存在详解


首先不论是有连接还是无连接,    我们核心应该确定的是什么?    确定四元组,对了四元组,无连接也可以进程间通信,只不过每一次必须传入四元组, 但是口说无凭, 咱看看接口呗。对比一下:

为什么UDP是不可靠连接?


因为UDP没有TCP的哪些为了保证可靠性的机制:   比如超时重传机制,拥塞控制,流量控制机制,为数据包编号排序等...


思考为啥UDP如此不可靠我们还必须要使用它, 而且还会尽量的使其变得可靠, 还要专门做UDP可靠性设计,这个不是多次一举吗. 不如直接使用TCP?


首先解释UDP相比TCP为什么相对实时性好, 在时间上更短, 更加快速。。。

以上是从不必要的三次握手建立连接上解释这个速度问题, 为啥UDP更快


而且在进行数据传输的时候TCP还会存在一定的时间限制,时间阈值,超过这个时间就需要进行重传, 重传也会导致延迟性,向我们的qq聊天呀就经常出现这样的延迟现象,很明显底层应当是采取的TCP作为传输层协议.


根据上述的延迟解释一下音视频通话为例解释下为啥使用UDP而不是TCP?


一句话解释:就是通话延迟的问题,我们qq上发个消息是无所谓,延迟下我们可以等会看嘛,但是你在跟别人搞音视频,像抖音这些,或者各种视频,这个要是通话延迟,几秒前说的话几秒后出来了你这个还搞个屁呀, 还说得清嘛,这个很明显需要实时通话,正是这样的场景存在所以UDP必然是需要的。。。而且现在音视频(短视频)如此火爆更是少不了UDP了


我们再从另外一个角度来分析一下这个问题, 服务端压力上面来考虑。。。

再谈UDP可靠传输的设计。。。  

  • 现有的udp可靠传输协议就是KCP了,感兴趣的还真有必要得去深入研究一下,我个人是研究深度还不够,先暂且浅显的聊一聊这个UDP可靠传输设计的一些基本的东西,KCP要是将来我的理解深入足够会尽力刨析一下...

  • 首先既然提到了MTU  先解释一下  MTU是个啥玩也.

总结UDP可靠传输的学习:


多研究TCP协议的实现


设计  udp可靠传输,和TCP不一样,重传策略受到我们的控制可控  (也不一定所有都需要重传)  像音视频,游戏走位 超时太久丢包就丢了,不需要重传...  但是有些其他应用场景下又必须进行重传


重传时机的确定 (根据具体的业务需求去设计,不要一味追求设计一个通用性的UDP可靠传输协议)

五.   对比TCP和UDP的细节

连接    

 

TCP是面向连接的传输层协议,传输数据前需要先建立连接


UDP 是不需要建立连接的。 即可马上立即传输数据 (接口传入二元组)


服务对象


TCP是一对一的两点服务,即一条连接只有两个断点


UDP支持一对一 ,一对多, 多对多的交互通信


可靠性


TCP是可靠交付数据的,数据无差错,不重复,按顺序到达


UDP则是尽力交付,不保证可靠 (因为没有各种传输策略)

总结本文

    • 本文从再看HTTP  和  对比学习   HTTPS入手
    • HTTP协议的学习核心在于搞清楚他是一次性的无状态连接方式,连接建立之后服务结束立马断开连接。。。  
    • 还有就是搞清楚HTTP的报文格式

      上述的核心在于最开始的一行请求行 (请求方法  URL  协议版本) +   状态行(协议版本  状态码  状态码描述字段)   搞清楚空行的作用:分割报头和正文


      HTTPS对比 HTTP学习  :  一个是明文传输的角度来看  另外一个是从网站真实性,身份验证,中间数据修改  的角度来看去分析,HTTPS相对 HTTP多了SSL加密层


      然后是UDP和TCP的学习:


      UDP无连接的  基于一个一个数据包的传输的一种 不可靠传输协议  (但是因为其相对TCP的快速 (实时性更好) + 可制定各种传输策略实现可靠传输 )在音视频通话等领域有着不可替代的作用


      TCP有连接的 基于数据流的可靠传输协议  (可靠的核心在于各种策略机制)


      相关文章
      |
      2月前
      |
      网络协议 安全 网络安全
      什么是TCP/UDP/HTTP?它们如何影响你的内网穿透体验?
      数据的传输离不开各种协议,它们就像现实世界中的交通规则,规定了数据如何打包、寻址、传输和接收。对于使用内网穿透的用户来说,理解TCP、UDP和HTTP这些基础协议的特点,能帮助你更好地理解其性能表现,并选择最适合的配置方案。
      |
      4月前
      |
      网络协议 安全 网络安全
      详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
      详细阐述 TCP、UDP、ICMPv4 和 ICMPv6 协议-以及防火墙端口原理优雅草卓伊凡
      419 2
      |
      6月前
      |
      安全 网络协议 Linux
      Linux网络应用层协议展示:HTTP与HTTPS
      此外,必须注意,从HTTP迁移到HTTPS是一项重要且必要的任务,因为这不仅关乎用户信息的安全,也有利于你的网站评级和粉丝的信心。在网络世界中,信息的安全就是一切,选择HTTPS,让您的网站更加安全,使您的用户满意,也使您感到满意。
      191 18
      |
      6月前
      |
      网络安全 开发者
      如何解决HTTPS协议在WordPress升级后对网站不兼容的问题
      以上就是解决WordPress升级后HTTPS协议对网站的不兼容问题的方法。希望能把这个棘手的问题看成是学校的管理问题一样来应对,将复杂的技术问题变得更加有趣和形象,并寻觅出解决问题的方式。希望你的网站能在新的学期得到更好的发展!
      180 19
      |
      6月前
      |
      JSON 安全 网络协议
      HTTP/HTTPS协议(请求响应模型、状态码)
      本文简要介绍了HTTP与HTTPS协议的基础知识。HTTP是一种无状态的超文本传输协议,基于TCP/IP,常用80端口,通过请求-响应模型实现客户端与服务器间的通信;HTTPS为HTTP的安全版本,基于SSL/TLS加密技术,使用443端口,确保数据传输的安全性。文中还详细描述了HTTP请求方法(如GET、POST)、请求与响应头字段、状态码分类及意义,并对比了两者在请求-响应模型中的安全性差异。
      633 20
      |
      6月前
      |
      安全 网络协议 算法
      HTTP/HTTPS与SOCKS5协议在隧道代理中的兼容性设计解析
      本文系统探讨了构建企业级双协议隧道代理系统的挑战与实现。首先对比HTTP/HTTPS和SOCKS5协议特性,分析其在工作模型、连接管理和加密方式上的差异。接着提出兼容性架构设计,包括双协议接入层与统一隧道内核,通过协议识别模块和分层设计实现高效转换。关键技术部分深入解析协议转换引擎、连接管理策略及加密传输方案,并从性能优化、安全增强到典型应用场景全面展开。最后指出未来发展趋势将更高效、安全与智能。
      241 1
      |
      7月前
      |
      网络协议 Java 开发工具
      全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
      全平台开源即时通讯IM框架MobileIMSDK:7端+TCP/UDP/WebSocket协议,鸿蒙NEXT端已发布,5.7K Stars
      438 1
      |
      7月前
      |
      安全 网络安全 数据安全/隐私保护
      HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
      HTTP 与 HTTPS 协议及 SSL 证书解析-http和https到底有什么区别?-优雅草卓伊凡
      399 3
      |
      9月前
      |
      网络协议 安全 网络安全
      HTTP与HTTPS协议入门
      HTTP协议是互联网的基石,HTTPS则是其安全版本。HTTP基于TCP/IP协议,属于应用层协议,不涉及数据包传输细节,主要规定客户端与服务器的通信格式,默认端口为80。
      331 25
      HTTP与HTTPS协议入门
      |
      11月前
      |
      监控 网络协议 网络性能优化
      不再困惑!一文搞懂TCP与UDP的所有区别
      本文介绍网络基础中TCP与UDP的区别及其应用场景。TCP是面向连接、可靠传输的协议,适用于HTTP、FTP等需要保证数据完整性的场景;UDP是无连接、不可靠但速度快的协议,适合DNS、RIP等对实时性要求高的应用。文章通过对比两者在连接方式、可靠性、速度、流量控制和数据包大小等方面的差异,帮助读者理解其各自特点与适用场景。