计算机网络

TCP,UDP各自特点,优缺点,TCP可靠传输/滑动窗口/流量控制/拥塞控制、OSI分层结构。

    TCP:面向连接,提供可靠传输;把用户数据报拆分封装成为报文;适合传输大量数据,对可靠性要求较高的场景。

    UDP:非面向连接,不可靠;不拆分用户数据报,直接加UDP头;适合传输少量数据,对可靠性要求不高的场景。

    UDP没有建立/释放连接、可靠传输、拥塞控制等过程,速度更快。需要应用层自己实现TCP类似的功能。

TCP三次握手过程:

    设客户端主机A,服务端主机B通信。

    1.A向B发送[连接请求]报文,同步位SYN为1,并随机选择一个序列号seq=x。A进入同步已发送状态。

    2.B收到[连接请求]报文后,若同意建立连接,向A发送[连接确认]报文,同步位SYN=1,确认位ACK为1,随机选择一个序列号seq=y,ack=x+1,。B进入同步已接收状态。

    3.A收到B的[连接确认]报文后,还要向B发出确认,确认位ACK为1,确认号ack=y+1,序列号seq=x+1。

    4.B收到A的确认后,进入连接已建立阶段,可以进行会话。

    为什么不能是两次握手:避免失效的连接请求到达服务器,建立无效连接浪费服务器资源。

TCP四次挥手:

    1.A向B发送[连接释放]报文,FIN=1,设当前序列号seq=u。

    2.B收到[连接释放]报文后向A发出确认,此时TCP进入半关闭状态,B继续向A发送未发送完的数据。

    3.当B不在需要连接时,发送连接释放请求,FIN=1。

    4.A收到后发出确认,并等待2*MSL。

    为什么四次挥手而不是三次挥手:让服务器发送还未发送完的数据。

    为什么等待2*MSL:1.确保最后一个确认报文到达了B。如果B没有收到来自A的确认报文,那么会重新发送连接释放报文。2.让本连接持续时间内的所有报文都在网络中消失。

TCP流量控制:

    目的:控制发送方速率,保证接收端来得及接收。

    实现:接收方的[确认报文]中的窗口字段可以控制发送方窗口大小,从而影响发送端发送速率。

TCP滑动窗口:发送端维护一个发送窗口,包含[已发送但未确认]和[尚未发送]两个部分,发送窗口内的序号都允许被发送。当收到确认时,窗口就会右移,直到左边第一个序号不是[已发送且已确认]状态。接收端维护一个接收端口,接收端只会对按序到达的最后一个序号进行确认,然后右移,直到左边第一个序号不是[已发送确认且交付主机]状态。

TCP如何实现可靠传输:累积确认+超时重传:如果一个报文在超时时间内没有收到确认,就重传该报文。

TCP拥塞控制:

    拥塞控制与流量控制的区别:流量控制是为了让接收方来得及接收,发送方被动调节窗口大小。如果网络出现拥塞,大量的报文将丢失,如果采用超时重传机制,无疑会进一步加剧拥塞状况,因此要引入拥塞控制,以降低整个网络的拥塞程度。

    拥塞控制算法:慢开始、拥塞避免、快开始、快重传。

    (1)慢开始与拥塞避免:

    1.发送的最初执行慢开始,拥塞窗口cwnd(congestion window)=1,发送方一开始只能发送一个报文;当收到确认后,将cwnd加倍,因此发送方一次能够发送的的报文数为2,4,8...。

    2.设置一个慢开始阈值ssthresh,当cwnd>=ssthresh时,进入拥塞避免,每次cwnd加1。

    3.如果出现了超时,则令ssthresh=cwnd/2,cwnd=1,重新开始慢开始过程。

    (2)快开始、快重传:

    1.当接收到3个重复的确认时,表示下一个报文丢失,此时执行快重传,即重传下一个报文。

    2.令ssthresh=cwnd/2,cwnd=ssthresh,直接进入拥塞避免阶段。

分层:

    1.物理层:传输比特bit流。

    2.数据链路层:传数据帧。

    3.网络层:传数据报。

    4.传输层:传报文。

    5.应用层:Telnet、Ftp、Http、DNS、

分用的实现:

    (1)数据链路层分用:当接收到一个数据帧时,根据帧首部中的帧类型进行IP/ARP/RARP分用。

    (2)网络层分用:根据[IP数据报]首部中的协议字段进行TCP/UDP/ICMP/IGMP分用。

    (3)传输层分用:根据[TCP/UDP报文]首部中的端口号进行分用。

    其它:ARP通过IP地址找物理地址,RARP通过物理地址找IP地址。ICMP与IGMP是IP层子协议,属于网络层协议;ICMP主要用于主机与路由器之间传递控制信息,

https://github.com/CyC2018/Interview-Notebook/blob/master/notes/

https://www.zhihu.com/question/38749788

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值