计算机网络面试题(1)--TCP

TCP(Transmission Control Protocol, 传输控制协议)

  1. TCP三次握手、四次挥手示意图,要能够描述过程。
    详解参考 https://blog.csdn.net/qq_38950316/article/details/81087809
  2. OSI七层网络模型和TCP/IP四层网络模型

在这里插入图片描述
3. TCP和UDP的区别
TCP:面向连接,面向字节流,可靠服务,资源要求较多,速度慢
UDP:无连接,面向报文,不可靠,资源要求较少,速度快
4. TCP如何保证可靠传输
1、确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。
2、数据校验
3、数据合理分片和排序:
  UDP:IP数据报大于1500字节,大于MTU.这个时候发送方IP层就需要分片(fragmentation).把数据报分成若干片,使每一片都小于MTU.而接收方IP层则需要进行数据报的重组.这样就会多做许多事情,而更严重的是,由于UDP的特性,当某一片数据传送中丢失时,接收方便无法重组数据报.将导致丢弃整个UDP数据报.
  TCP会按MTU合理分片,接收方会缓存未按序到达的数据,重新排序后再交给应用层。
4、流量控制:当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包丢失。
5、拥塞控制:当网络拥塞时,减少数据的发送。

  1. 拥塞控制与流量控制的区别:
    拥塞控制是防止过多的数据注入到网络中,可以使网络中的路由器或链路不致过载,是一个全局性的过程。
    流量控制是点对点通信量的控制,是一个端到端的问题,主要就是抑制发送端发送数据的速率,以便接收端来得及接收。

  2. 拥塞控制算法
    慢开始:刚刚加入网络的连接设置cwnd = 1,一点一点地提速,不要一上来就把路占满。
    拥塞避免:当拥塞窗口 cwnd 达到一个阈值时,窗口大小不再呈指数上升,而是以线性上升,避免增长过快导致网络拥塞。
    快速重传:当接收方收到失序数据时,立即返回重复ACK,不能延迟发送。
    快恢复:至少收到了3个Duplicated Acks,说明网络也不那么糟糕,可以快速恢复。

  3. TCP挥手中的TIME_WAIT就是主动断开的一方,发送完最后一次ACK之后进入的状态
    作用:
    (1)保证可靠关闭:若主动方的应答ACK因为拥塞等原因被丢弃,那么被动方会重新发送FIN+ACK, 那么主动方还可以再次发送应答ACK;
    (2)让迟来的报文(数据或者FIN等)有足够的时间被识别和丢弃,防止影响新的连接。因为通信双方都将处于TIME_WAIT状态的连接(客户端IP、客户端端口、服务端IP、服务端端口)定义为不可重新使用。
    (3)MSL是报文传输的最大生存时间,超过MSL的报文将被丢弃,这就是TIME_WAIT设置成2MSL(发送方发送、接收方发送加起来的时间)的原因;MSL比TTL大一些。
    如发现系统存在大量TIME_WAIT状态的连接,通过调整内核参数解决:
    net.ipv4.tcp_syncookies = 1 表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
    net.ipv4.tcp_tw_reuse = 1 表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
    net.ipv4.tcp_tw_recycle = 1 表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
    net.ipv4.tcp_fin_timeout 修改系默认的 TIMEOUT 时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值