计算机网络

TCP三次握手和四次挥手

三次握手

image

  1. 客户端发送带有SYN的标志的数据包
  2. 服务端发送带有SYN/ACK标志的数据包
  3. 客户端发送带有ACK标志的数据包

为什么三次握手缺一不可

  1. 客户端发送SYN数据包,如果服务端收到会给客户端回复SYN/ACK数据包,如果客户端收到服务端回复的SYN/ACK数据包,客户端就可以确定自己的发送和接收功能正常;
  2. 客户端收到服务端发送的SYN/ACK数据包之后,会给服务端回复ACK数据包,服务端如果收到客户端回复的ACK数据包,说明服务端的发送和接收功能正常;
  3. 双方收发功能都正常才可以进行通信,所以三次握手缺一不可。

四次挥手

image

  1. 客户端发送一个FIN(客户端告诉服务端想要结束连接,没有要发送的数据了)
  2. 服务端收到FIN,发回一个ACK(服务端告诉客户端好的,我知道了)
  3. 服务端关闭与客户端的连接,发回一个FIN(服务端关闭连接,告诉客户端我也没有要发送的数据了)
  4. 客户端发回ACK确认(客户端告诉服务器端我知道了,断开连接)

TCP和UDP

TCP和UDP的区别

UDP在传输数据前不需要连接,接收端接收UDP报文后,不需要发回确认。UDP不提供可靠交付,但传输效率快,所需资源少。
TCP在传输数据前需要进行连接,数据传输结束后需要释放连接。TCP不提供广播和多播服务。TCP提供可靠交付,所以增加了开销,使得协议数据单元的首部增大,还要占用处理机资源。一般用于文件传输、收发邮件等。

TCP如何保证可靠传输?

  1. 数据被分割成TCP认为最适合发送的数据块;
  2. TCP对发送的每个数据包进行编号,接收方根据编号将数据包排序,然后将有序的数据传给应用层;
  3. 校验和:TCP会保持首部和数据的校验和,用来检测传输过程中数据是否发生了变化,如果收到数据的校验和有差错,TCP将丢弃该报文段且不确认收到该报文段;
  4. TCP接收端会丢弃重复的数据;
  5. 流量控制: TCP连接的双方都有固定大小的数据缓冲区,接收端只允许发送端发送缓冲区能接纳的数据。如果发送过快,接收方来不及处理,接收方可以给发送方提示降低发送的速度,防止丢包;
  6. 拥塞控制: 当网络拥塞时,减少数据发送;
  7. ARQ协议:每发完一个分组就停止发送,等待接收方确认,收到确认之后再发送下一个分组;
  8. 超时重传: TCP发出一个报文段之后,会启动一个定时器,等待接收方确认接收该报文段。如果没有即使收到确认,将会重发该报文段。

ARQ协议

自动重传请求是OSI模型中数据链路层和传输层的错误纠正协议之一。通过使用确认超时机制,在不可靠服务的基础上实现可靠的信息传输。
ARQ包括停止等待ARQ协议和连续ARQ协议:

  • 停止等待ARQ协议
    每发完一个分组就停止发送,等到接收方确认再发送下一个分组。
    • 无差错情况
    • 出现差错情况(超时重传)
    • 确认丢失和确认迟到
  • 连续ARQ协议
    连续ARQ协议可以提高信道利用率。发送方维持一个发送窗口,只要在发送窗口中的分组可以连续发送出去,而不需要等待接收方确认。接收方一般累计确认,对按序到达的最后一个分组发送确认,表示这个分组以及之前的分组全部收到。

滑动窗口和流量控制

TCP利用滑动窗口来实现流量控制。流量控制是为了控制发送方的发送速率,保证接收方来得及接收。
接收方发送的确认报文中的窗口字段可以控制发送方窗口的大小。

拥塞控制

为了进行拥塞控制,TCP发送方需要维持一个拥塞窗口的状态变量。控制拥塞窗口的大小取决于网络的拥塞程度,并且动态变化。
TCP的拥塞控制采用了四种算法:慢开始、拥塞避免、快重传和快恢复。

  • 慢开始:由小到大逐渐增大发送窗口,即由小到大逐渐增大拥塞窗口数值。发送窗口大小初始值为1,每收到一次确认,发送窗口大小翻倍;当发送窗口大小达到慢启动门限值时,执行拥塞避免算法;
  • 拥塞避免:发送窗口大小每次加1;

接收方接收到一个失序的报文就立刻发出重复确认,接收方收到三次重复确认后就会知道是数据包丢失,会立刻执行快重传,重新发送丢失的数据包,然后执行快恢复算法;如果接收方超过一定时间还没有收到确认回复,则出现了网络超时,此时将慢开始门限值设置为当前发送窗口大小的一半,然后将发送窗口大小初始化为1,执行慢开始算法;

  • 快恢复:将慢开始门限设置为当前发送窗口大小的一半,然后将发送窗口大小也设置为当前发送窗口大小的一半,执行拥塞避免算法。

在浏览器输入url到显示主页的过程

  1. 浏览器查找域名对应的IP地址:DNS解析
  2. 浏览器向web服务器发送一个HTTP请求:TCP连接
  3. 服务器处理请求
  4. 服务器发回一个HTML响应
  5. 浏览器开始显示HTML

IP

image

IP在TCP/IP参考模型中处于第三层----网络层。
网络层作用:实现主机与主机之间的通信,也叫点对点通信

网络层(IP)与数据链路层(MAC)的区别

IP负责两个「没有直连」的设备之间通信,MAC负责两个「直连」的设备通信。
image
在网络传输中,源IP地址和目标IP地址不会发生变化,只有源MAC地址和目标MAC地址一直在变化。

IP地址

分类

IP地址分为5类,A、B、C、D、E五类
image

  • 广播地址(主机号全为1)用于在同一个链路中相互连接的主机之间发送数据包。
  • D类地址常用于多播,多播用于将包发送给特定组内所有主机,广播无法穿越路由器,如果想给其他网段发送同样的包,可以使用多播
    • 224.0.0.0 ~224.0.0.255 是预留的组播地址,只能在局域网内,路由器不能转发;
    • 224.0.1.0 ~ 238.255.255.255 是用户可用的组播地址,可以在Internet上使用;
    • 239.0.0.0 ~ 239.255.255.255 是本地管理的组播地址,供内部网在内部使用
  • E类地址是预留地址,还未使用

IP分类的优缺点

  • 优点:
    可以通过判断IP地址的首位是否为0来判断IP地址所属分类,从而快速找到网络地址和主机地址。
  • 缺点:
    • 同一网络下没有地址层次
    • 不能很好的与现实网络匹配:每一类网络的主机数量

无分类地址CIDR

没有分类地址的概念,将32位地址分为两部分:网络号+主机号

如何划分

  • a.b.c.d/x 其中/x表示前x位属于网络号。
  • 子网掩码和IP地址按位AND,可以得到网络号

子网划分

子网划分是将主机地址分为两个部分:子网网络地址和子网主机地址
image

IP地址与路由控制

路由器中有路由控制表,查找与目标IP网路地址相同的路由器进行转发。

IPV6

  • IPv4 地址长度共 32 位,是以每 8 位作为一组,并用点分十进制的表示方式。
  • IPv6 地址长度是 128 位,是以每 16 位作为一组,每组用冒号 「:」 隔开。

IPV6比IPV4改进

  • 取消了首部校验和字段
  • 取消了分片/重新组装相关字段
  • 取消了选项字段

HTTP

GET和POST

GET

GET的语义是从服务器获取指定的资源。GET请求参数一般写在URL中,URL只支持ASCII,浏览器对URL长度有限制。

POST

POST的语义是根据请求负荷(报文body)对指定的资源作出处理。POST请求携带数据的位置一般写在报文body中,body可以是任意格式,只要客户端和服务端一致就行,浏览器不会对body大小做限制。

GET和POST方法都是安全和幂等的吗?

  • 安全是指请求不会破坏服务器上的资源;
  • 幂等是多次执行的结果相同。
    GET是安全且幂等的,但POST不安全且不幂等。

HTTP缓存技术

对于一些具有重复性的HTTP请求,可以将请求响应的数据都缓存在本地。HTTP实现缓存有两种方式:强制缓存和协商缓存

强制缓存

只要浏览器判断缓存没过期,就直接使用本地缓存,使用缓存的主动性在浏览器这边。

协商缓存

请求响应码304,服务端告诉浏览器可以使用本地缓存,服务端告知客户端是否可以使用缓存的这种方式称为协商式缓存

posted @   小垃圾在努力!  阅读(173)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示