计算机网络

五层协议

从下往上依次是:

  • 物理层
  • 数据链路层
  • 网络层
    IP、ARP、ICMP等协议
  • 传输层
    TCP、UDP协议
  • 应用层
    HTTP、FTP、SMTP、DNS协议

网络层

主要是IP协议

传输层

TCP与UDP区别

TCP:面向连接、可靠传输、面向字节流、流量控制、拥塞控制、一对一
UDP:无连接、最大努力交付、面向报文、一(多)对一(多)

TCP报文

TCP报文的首部包含:

  • 源端口、目的端口
  • 序号seq
  • 确认号ack
  • 确认ACK
  • 同步SYN
  • 终止FIN

TCP连接建立

三次握手

为什么三次?
双方确认两方都能收发,建立可靠传输通道(本质)
假设A向B请求建立TCP连接,
第一次握手的结果:A不能下结论;B确定A发送正常
第二次握手的结果:A确定自己发送和接收正常,且B的发送、接收都正常;B确定A发送正常,且自己接收正常
第三次握手的结果:A确定自己发送和接收正常,且B的发送、接收都正常;B确定A的发送、接收正常,且自己的发送和接收都正常

TCP连接释放

四次挥手

为什么四次挥手?
前两次是客户端告诉服务端自己不会再发送数据,只会接收数据,客户端收到确认后,TCP连接处于半关闭状态。此时接收端仍可以向客户端发送数据。
后两次是服务端告诉客户端自己不会再发送数据了,服务端收到确认后,服务端正式关闭TCP连接;客户端在发送完最后一个确认报文之后还要等待2MSL时间,称为TIME_WAIT

为什么TIME_WAIT?

  • 确保最后一个报文被对方收到,如果对方没有收到,对方会超时重传,客户端趁此时间响应
  • 保证此TCP连接内的所有报文在网络里消失,不会影响下一个连接

TCP可靠传输的实现

  • 字节编号
  • 流量控制
  • 拥塞控制
  • 停止等待协议+超时重传

流量控制

TCp报文里有一个字段是窗口值wnd,在确认报文里设置这个窗口值,告诉发送方自己还能接收多少数据,控制发送方发送速率

拥塞控制

避免过多的数据注入到网络里
TCP进行拥塞控制的算法有四种:慢开始、拥塞避免、快重传、快恢复

慢开始

cwnd=1,每经过一个传输轮次,将cwnd加倍,因此cwnd会呈指数增长,由于增长速度太快,会设置一个慢开始门限ssthresh,当cwnd==ssthresh时,进入拥塞避免阶段

拥塞避免

此阶段cwnd的增长是线性的,每经过一个传输轮次cwnd+1

在慢开始和拥塞避免阶段都可能会遇到网络拥堵,因此会出现超时现象,此时的处理方法是将慢开始门限ssthresh设置为当前cwnd的一半,并重新回到慢开始阶段。

快重传

快重传机制是针对报文丢失的情况,快重传机制要求对接收到的数据立即发出确认,而不是等到自己要发送数据才捎带确认。
因此有了快重传机制,如果出现了报文丢失的情况,接收方会反复发出对缺失报文的前一个报文的确认,当发送方接收到3个重复确认时,意识到报文丢失了,进入快恢复阶段

快恢复

快恢复是针对快重传机制的,是处理报文丢失的情况,而报文丢失并不是网络拥塞引起的,因此快恢复阶段不会像超时那样回到慢开始阶段,而是设置ssthresh=cwnd/2,cwnd=ssthresh,也就是开始了拥塞避免阶段

应用层

HTTP协议

请求、响应报文

HTTP报文分为三部分:开始行、首部行、实体

请求报文的开始行包括请求方法、请求url等信息,响应报文的开始行包括状态码等信息

首部行包括了用户代理、接收的语言/编码方式、缓存、连接保持、cookie等信息

实体就是HTTP报文数据段

GET、POST报文

HTTP1.0/1.1/2.0

HTTPS

HTTPS=HTTP+数据加密+证书认证+完整性保护
HTTPS是披着SSL或者TLS外衣的HTTP协议,由SSL或者TLS提供安全机制,SSL/TLS工作在传输层。
HTTP协议将数据交友SSL/TLS加密,然后再交给TCP进行传输

url到显示页面过程

简短:

  • DNS解析?
  • TCP连接
  • HTTP请求
  • HTTP响应
  • 浏览器解析、渲染页面
  • 连接结束

常见错误码

  • 2xx:成功
  • 3xx:重定向
  • 4xx:客户端错误
  • 5xx:服务端错误
posted @ 2019-02-21 21:24  darknessplus  阅读(225)  评论(0编辑  收藏  举报