计算机网络就是通过传输介质、通信设施和网络协议,把分散在不同地点的计算设备互连起来,实现资源共享和数据传输的系统。
TCP/IP协议簇
TCP/IP协议栈是一系列网络协议的总和,是构成网络通信的核心骨架。
分层模型
TCP/IP协议栈的分层模型常见的有2个,分别是TCP/IP参考模型和ISO组织提出的OSI参考模型。在TCP/IP参考模型中将网络分为网络访问层【数据链路层】、互联网层【网络层】、传输层、应用层共4层,OSI参考模型分为物理层、数据链路层、网络层、传输层、会话层、表示层、应用层共7个层。
TCP/IP参考模型
TCP/IP协议采用4层架构,从上向下分为应用层、传输层、网络层和链路层,每一层都可以使用其下一层的协议完成自己的需求,不允许下层访问上层。
当通过http协议发起一个请求时,从上往下依次通过应用层、传输层、网络层和链路层,每一层相关协议都依次对数据包进行处理,并携带响应的首部,最终在链路层生成以太网数据包,通过物理介质进行传输,传送到对方主机后,对方主机再依次从下向上使用响应协议进行拆包,最终经应用层数据交给应用程序进行处理。
三次握手
TCP是面向连接的协议,连接连接需要有3个阶段:连接建立、数据传送和连接释放。其中连接建立需要经历3个步骤,通常称为三次握手。
1、第一次握手,客户端发起请求
2、第二次握手,服务器端回传确认
3、第三次握手,客户端回传确认
四次挥手
由于TCP连接是双工的,所以每个方向都必须单独进行关闭。
粘包
多个数据包存储在缓存中,对数据包的处理由于无法确认边界,所以经常采用估测值大小进行数据的读写,如果发送和接收数据的双方size不一致时,会使用发送方发送的若干个包数据到接受方接收时粘成一个包。
原因:
既可以是发送方造成的,也可能是接收方造成。粘包并不是TCP协议造成的,出现是因为应用层设计的缺陷。
Nagle算法通过减少数据包数量的方式提供TCP传输性能。
拥塞控制
防止过多的数据注入网络,以避免使网络中的路由器或者链路过载。
拥塞控制前提是网络能够承受现有的网络负荷。
不同于流量控制,流量控制就是拟制发送方发送数据的速率,以便使接收方能够来得及接收数据。
拥塞控制的机制
慢开始、拥塞避免、快重传和快恢复。
慢开始就是当主机发送数据时,先进行探测,可以由小到大逐渐增加发送窗口。
拥塞避免是让拥塞窗口缓慢增大,不是加倍,而是加1。
不使用快重传就是当发送方并没有在规定的时间内收到确认,则拥塞窗口减少到1,并执行慢开始算法;快重传要求结束方每收到一个乱序的报文后立即确认。
和快重传机制一起使用的是快恢复,将拥塞窗口的大小设置为慢开始的上限值的一半。



