初识计算机网络

为什么要有计算机网络这个东西呢?

其实说白了就是为了提高效率

比如说,你在北京,要给一个西藏的客户送快递,那你总不能自己定个机票再手动给他送吧,又不是只有他一个单子需要派送,是向全国各地派送,所以就需要各地都有驿站收发快递

OSI体系结构

把结构分成七层(但是比较滞后,跟不上时代了)

还有一种事实上的国际标准:

为什么会存在这样的差别呢?

很正常啊

你法律意义上有个老婆,你出轨了

这个TCP/IP在实际的原理体系结构中,网络接口层里面还包含两层

每一个模块具体做了什么如下图所示:

在数据链路层会添加帧头和帧尾,在物理层会添加比特流

HTTP

应用层:解决通过应用进程的交互来实现特定网络应用的问题

在浏览器地址栏输入某个网站的域名后就可以访问该网站的内容,这就是万维网www应用 ,相关的应用层协议是超文本传输协议HTTP

传输就是http是双向的,超文本就是不只是文本

HTTP请求相应过程

HTTP最突出的特点是简单灵活易于扩展,应用广泛,跨平台

也分持久性和非持久性链接

HTTP报文格式

TCP

传输层比较重要的就是TCP和UDP

物理层数据链路层和网络层解决的是主机与主机间的通信

但是实际通信的是两个主机间的进程

这两个进程之间的通信的协议就是UDP或者TCP了

TCP是面向连接的,可靠的,基于字节流的传输层通信协议

而UDP不需要保证可靠所以相对就简洁一点

二者区别:

TCP三次握手建立连接

三次握手才可以阻止历史重复连接的初始化(主要原因)

三次握手才可以同步双方的初始序列号

三次握手才可以避免资源浪费

TCP四次挥手断开连接

关闭连接时,客户端向服务端发送FIN时,仅仅表示客户端不再发送数据了,但是还可以接收数据

服务器收到客户端的FIN报文时,先回一个ACK应答报文,服务端可能还有数据需要数据处理和发送,等服务端不再发送数据时,才发送FIN报文给客户端表示同意现在关闭连接

TCP可靠传输之流量控制

TCP是一个可靠传输的协议,那么怎么保证可靠呢?

保证数据可靠需要解决数据的破坏、丢包、重复、分片顺序混乱等问题,如果不解决这些问题,就无从谈起可靠性传输

TCP是通过序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输的

主要是重传机制、滑动窗口、流量控制、拥塞控制

流量控制是TCP提供的一种可以让发送方根据接收方的实际接收能力控制发送的数据量

TCP通过接收窗口变量来提供流量控制

接收窗口会给发送方一个指示(还有多少可用的缓存空间),发送端会根据接收端的实际接收能力来控制发送的数据量

TCP之拥塞控制

当网络拥堵时,如果发送大量 的数据包,可能会导致数据包时延,丢失等,这个时候TCP就会重传数据,但是重传又会导致网络的负担更重,就会造成更大的延迟和更多的丢包。。。

于是就有了拥塞控制 ,控制的目的是避免发送方的数据填满整个网络

为了在发送方调节所要发送的数据的量,定义了一个叫做拥塞窗口的概念

拥塞窗口cwnd是发送方维护的一个状态变量,它会根据网络的拥塞程度动态变化

只要网络中没有出现拥塞,cwnd就会增大

当网络中出现了拥塞,cwnd就会减少

只要发送方没有在规定时间内接收到ACK应答报文,发生了超时重传,就会认为网络中出现了拥塞

TCP之重传机制

重传机制有超时重传,快速重传和SACK方法

三者对比
机制 核心逻辑 重传触发条件 优势 局限性
超时重传 依赖超时计时器 超时未收到 ACK 逻辑简单 重传延迟高,无法处理连续丢包
快速重传 依赖重复 ACK 收到 3 个重复 ACK 减少重传延迟 仅能处理首个丢失的数据包
SACK 携带已接收数据块范围 结合重复 ACK 和 SACK 信息 精准重传非连续丢包 增加报文开销,实现复杂
相关推荐
10WTW0121 小时前
NTP协议
网络协议·计算机网络·ntp·ntp协议
多巴胺梦想家3 天前
计算机系统概述
计算机网络
AI人工智能+电脑小能手3 天前
【大白话说Java面试题 第210题】【10_网络协议篇】第1题:说说 TCP/IP 网络五层模型
java·网络协议·tcp/ip·计算机网络·网络五层模型
一条泥憨鱼3 天前
【从0开始学习计算机网络】| HTTP方法疑点解析
开发语言·计算机网络·http
一条泥憨鱼3 天前
【从0开始学习计算机网络】| RESTful API 设计原则
计算机网络·http·restful api
纵有疾風起4 天前
计算机网络的性能指标体系:带宽、时延、吞吐量
计算机网络·rtt·408·带宽·性能指标·吞吐量·时延
纵有疾風起4 天前
从OSI到TCP/IP——分层架构的思想根源与模型之争
tcp/ip·计算机网络·架构·osi·408·体系结构·分层
游戏开发爱好者84 天前
TraceEagle 代理抓包详解,无感代理、去证书绑定与 HTTP/3 解密能力解析
网络协议·计算机网络·网络安全·ios·adb·https·udp
2501_915918415 天前
抓包鹰 抓包会话重放与压力测试,接口回归验证与性能压测的方法
网络协议·计算机网络·网络安全·ios·adb·https·压力测试
一条泥憨鱼5 天前
【从0开始学习计算机网络】| HTTP 状态码
开发语言·网络·网络协议·计算机网络·http