计算机网络

一、五层协议

1.物理层:完成比特流和光、电、电磁波等信号之间的转化

2.数据链路层:在为相邻节点提供一条传输链路,主要实现封装成帧、透明传输和差错控制

3.网络层:为主机之间提供通信服务,负责原和目的地的传输和路由选择

4.传输层:为进程之间提供服务,TCP和UDP工作在这一层

5.应用层:定义报文类型,确定如何处理请求报文和确认报文,解析报文的语法和语义,控制进程进程何时及如何发送报文
二、TCP
(1)TCP三次握手
概念:

序列号(seq):发送方发送字节流的编号

确认号(ack):接收方期望接受字节流的编号

同步位(SYN);

确认位(ACK):
三次握手目的:

确保通信双方收发能力正常

同步序列号和确认号,确保后续的收发能通过序列号和确认号保证数据收发不重不漏
1.过程

第一次握手:客户端主动发起连接,随机生成序列号x;

第二次握手:服务端接收到连接请求后将随机生成序列号y,确认号置为x+1,同步位和确认位都置1,并将数据包发送给客户端

第三次握手:客户端将序列号置为x+1,确认号置为y+1,
2.如何确保双方收发能力正常

第一次握手,服务器可以确认客户端的发生能力正常;

第二次握手,客户端可以确认服务器的接收和发送能力都正常;

第三次握手,服务器可以确认客户端的接受能力正常;
3.为什么不是两次握手

原因一:两次握手,服务端无法确保客户端的接收能力是否正常

原因二:设想一种情况,当客户端首次发起连接请求,请求报文由于网络原因长时间滞留 ,客户端迟迟没有接受到服务器的响应,将再次发起连接请求,若新的请求先建立连接,并且传输完数据正常关闭后旧的连接到达服务器,由于只有两次握手,服务器收到旧连接确认后建立连接,但是客户端并不会再这个连接中收发数据,从而导致服务端一直等待,造成资源浪费。若是有第三次握手,服务端可以通过对比序列号和确认号,辨别出旧连接,并终止旧连接。
三、四次挥手
(1)过程

1.第一次挥手:客户端数据传输完毕,发生请求关闭报文,报文中随机生成序列号u,置终止位为1

2.第二次挥手:服务器收到关闭请求,发生确认报文,随机生成序列号v,确认号置u+1,确认标志位置1;

3.第三次挥手:服务器发生数据完毕,发生请求关闭报文,报文中随机生成序列号w,确认号u+1,终止位和确认位置1;

4.第四次挥手:客户端收到请求,发生确认报文,报文中序列号置u+1, 确认号置w+1,确认标志位置1 ,服务端收到确认报文后关闭连接,客户端等待2MSL没有收到服务器重新关闭的请求后也关闭连接。

2.为什么要等待2MSL(报文最大存活时间)

第四次挥手的确认报文可能丢失,若确认报文真的丢失了,服务器一定会在2MSL内重新发送关闭连接请求,若是不等待2MSL,报文丢失后服务端发起的关闭请求将得不到响应,服务器一直处于等待关闭的状态,造成服务器资源浪费。
3.为什么是四次挥手

三次挥手无法确保客户端收到了服务端关闭连接的请求,若第三次挥手服务器发送的报文丢失,此时服务端已经关闭连接,无法知道客户端是否收到关闭连接的请求,不会触发超时重传,导致客户端将一直等待服务端发送终止报文,从而导致连接无法正常关闭,若为四次挥手,服务器长时间没有收到客户端的确认,将触发超时重传,重新发起关闭请求。
四、粘包和拆包
(1)粘包

概念:TCP传输字节流数据,数据与数据之间没有分隔,当多组数据被整合到一个报时,接受方无法将数据分离。

产生原理:

①发送方:发送方连续发生多个小数据包,nagle算法会将几个小数据包组成一个大数据包

②接受方:发送速率太高,接受方无法及时将数据包从缓冲区读取,导致多个数据包堆积在一起,

解决:

①固定数据包长度:长度不足可以填充数据

②长度字段协议:数据包头部添加数据长度

③特殊标志协议:在数据包的头尾添加界定符

④关闭nagle算法
(2)拆包

概念:完整的数据包被拆成多个数据包

原因:

①接收方缓冲区太小,无法一次接受完,发生方必须将数据包拆分,以免数据丢失

②发生数据长度超过最大传输单元(MTU),必须拆开发生

解决:

①增大接受方缓冲区的大小

②调整最大传输单元(MTU)

③同粘包的三种方法
五、DNS

DNS概念:一种将域名转化为IP地址的服

相关推荐
_Power_Y2 分钟前
计算机网络:应用层知识点概述及习题
计算机网络
co0t9 分钟前
计算机网络(14)ip地址超详解
服务器·tcp/ip·计算机网络
C++忠实粉丝10 分钟前
计算机网络socket编程(3)_UDP网络编程实现简单聊天室
linux·网络·c++·网络协议·计算机网络·udp
吃土少女古拉拉2 小时前
什么是计算机网络
计算机网络·学习笔记
C++忠实粉丝2 小时前
计算机网络socket编程(4)_TCP socket API 详解
网络·数据结构·c++·网络协议·tcp/ip·计算机网络·算法
->yjy14 小时前
计算机网络(第一章)
网络·计算机网络·php
摘星星ʕ•̫͡•ʔ15 小时前
计算机网络 第三章:数据链路层(关于争用期的超详细内容)
网络·计算机网络
战术摸鱼大师20 小时前
计算机网络-理论部分(二):应用层
计算机网络
C++忠实粉丝1 天前
计算机网络socket编程(2)_UDP网络编程实现网络字典
linux·网络·c++·网络协议·计算机网络·udp