网络

  • OSI七层协议和五层协议
    在这里插入图片描述
    各层常见协议:
    物理层:IEEE802协议
    数据链路层:MAC协议
    网络层:IP, arp地址解析协议
    运输层:Tcp,udp
    会话层:SQL
    表示层:JPEG,MPEG
    应用层:SMTP邮件地址解析, http, ftp

  • Tcp与Udp区别

  1. tcp是面向连接的,可靠的数据流传输,udp是非连接的,不可靠的数据报传输。
  2. tcp连接是点到点的,而udp支持一对一,一对多和多对多。
  3. tcp头开销大,传输速度慢;udp头开销小,传输速度快。
  4. tcp逻辑通信信道是全双工的可靠信道,udp是不可靠信道。
  • tcp三次握手(建立连接)
  1. 第一次握手:客户端向服务器发送SYN包,请求建立连接;
  2. 第二次握手:服务器对请求做出响应,发送SYN+ACK包;
  3. 第三次握手:客户端做出响应,向服务器发送ACK包。

SYN,ACK,FIN均为tcp首部的字段。SYN:表示连接建立时用来同步的序号。ACK:表示确认;FIN:数据发送完毕。

三次握手原因:为了防止失效的连接请求突然到达服务器,产生错误。服务器认为客户端要建立连接而发送确认报文,但是A此时没有建立连接的请求,所以不会对服务器发送确认报文,也不会发送数据,服务器就会一直等待。

  • tcp四次挥手(断开连接)
  1. 第一次握手:A端向B端发送FIN包,请求关闭连接;

  2. 第二次握手:B端对请求响应,发送ACK包。

  3. 第三次握手:等到B端向A端发送的数据完毕,向A端发送FIN+ACK包,请求断开连接;

  4. 第四次握手:A端做出响应,发送ACK包,进入time_wait状态。(等待2个报文生存周期进入closed状态,而B端接受到ACK后进入closed状态)。

    tcp是全双工,发送断开连接请求的既可以是客户端也可以是服务器。

为什么四次挥手:
因为tcp连接是全双工(双向连接)的,客户端向服务器发送断开连接请求后,这需要两次握手,服务器继续向客户端传输没传完数据,然后服务器发送连接断开请求,这也需要两次握手。所以服务器的FIN和ACK包是分开发送的,而建立连接时服务器端SYN和ACK是一起发送的,所以建立连接要三次,断开连接要四次。

为什么客户端的time_wait状态要维持2MSL(最大报文生存周期)呢?

  1. 为了保证客户端发送的ACK报文能成功到达服务器端,如果不能,则重传。
  2. 为了使网络中的旧数据包都因为过期而消失,避免数据混乱。
  • tcp粘包问题

  • TCP 是一个基于字节流的传输,“流” 意味着所传输的数据是没有边界的。所以可能会出现两个数据包黏在一起的情况。

  • 解决方法:

  1. 发送定长包。如果每个消息的大小都是一样的,那么在接收时直到数据等于一个定长的数值就将它作为一个消息。
  2. 包头加上包体长度。包头是定长的 4 个字节,说明了包体的长度。接收对等方先接收包头长度,依据包头长度来接收包体。
  3. 在数据包之间设置边界,如添加特殊符号 \r\n 标记。FTP 协议正是这么做的。如果数据正文中也含有 \r\n,则会误判为消息的边界。
  • tcp流量控制(滑动窗口实现)
    流量控制是限制发送端的发送速率,让接收端来得及接受。使用滑动窗口的方法实现流量控制,即发送端 的发送窗口不能超过接收端接收窗口的大小。

  • tcp拥塞控制 以及什么时候该减慢增长速度?
    拥塞控制是防止过多的数据注入网络,使得网络中的链路过载。发送双方都有一个拥塞窗口。

  1. 慢开始
    最开始发送方拥塞窗口为1,每个传输轮次后拥塞窗口加倍,当拥塞窗口超过慢开始门限,则使用拥塞避免算法,防止窗口过大。
  2. 拥塞避免
    每个传输轮次,拥塞窗口只增长1,一旦发现网络拥塞就把慢开始门限设置为原来的一半,并设置拥塞窗口为1,重新执行慢开始算法。
  3. 快重传
    接收方收到一个失序报文就立即发出重复确认,发送方只要连续收到三个重复确认就立即重传。
  4. 快恢复
    发送方连续收到三个重复确认后,将慢开始门限减半, 并把拥塞窗口设置为当前慢开始门限,然后执行拥塞避免算法,加法增大拥塞窗口大小。
    在这里插入图片描述
    采用快恢复算法时,慢开始只在建立连接和网络超时才使用。

达到什么情况的时候开始减慢增长的速度?

采用慢开始和拥塞避免算法的时候

  1. 一旦cwnd>慢开始门限,就采用拥塞避免算法,减慢增长速度
  2. 一旦出现丢包的情况,就重新进行慢开始,减慢增长速度

采用快恢复和快重传算法的时候
3. 一旦cwnd>慢开始门限,就采用拥塞避免算法,减慢增长速度
4. 一旦发送方连续收到了三个重复确认,就采用拥塞避免算法,减慢增长速度。

  • http超文本传输协议

http是无状态协议,永远是客户端发起请求,服务器做出响应。http请求包含状态行,消息头,消息主体。http操作分为四步:

  1. 建立Tcp连接。
    (1)域名地址解析,域名包括协议名、主机名、端口、对象路径,域名解析系统DNS负责将域名解析为具体的ip地址。
    (2)将http请求(主要是本机信息)封装成tcp包,建立tcp连接并发送tcp包。
  2. 客户端发送http请求给服务器,服务器做出响应。
  3. 客户端接收到服务器的响应信息,通过浏览器显示出来。
  • 请求方式GET与POST区别:
  1. GET方式将参数放到url中,post方式把参数放到request body中,更安全;
  2. get产生一个tcp数据包,post产生两个tcp数据包,先发送http头,在发送数据。
  3. get提交数据长度是有限的1024字节,而post是无限的。get请求会被浏览器缓存,而post不会。
  • coockie与session区别

cookie和session都是用于存储缓存数据。

  1. cookie把用户数据保存在客户端,可以被他人修改存在风险;session吧用户数据保存在服务器,当访问次数多时占用服务器空间,影响性能。
  2. 可以把登录信息等重要数据保存在session,其他数据保存在cookie中。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值