TCP UDP IP 等网络相关的面试总结,问到的都在这里了

Networks

Four Layers of TCP/IP model.

IP

IP 是网络层(数据包)协议,分为 IPv4 和 IPv6。

IP 地址的长度

IPv4 长度是 32位,是 4 组 8 位二进制,可以用点分十进制表示,如 255.255.255.255, 用二进制表示就是 11111111 11111111 11111111 11111111, 即 32 位。

IPv6 长度是 128 位,由 8 个字段组成,每一块都表示四个 16 进制数,如 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789, 最大地址个数为 2^32 个。一个 16(0 - F) 进制由 4 位二进制表示,一个字段长度为 16 字节,总长度 16 * 8 = 128 字节。

IP 地址的类别

类别 网段 区分 地址范围
A 0~127 二进制首位为0 1.0.0.1~127.255.255.254
B 128~191 二进制首位为10 172.16.0.0~172.31.255.254
C 192~223 二进制首位为110 192.168.0.1~192.168.255.254
D 224~239 二进制首位为1110 224.0.0.0~239.255.255.254
E 240~255 二进制首位为1111 240.0.0.0~255.255.255.255

TCP

TCP 和 IP 的关系:IP 数据包分为 IP 头部和 IP 数据部分,IP 数据部分中包括 TCP 头部加 TCP 数据部分。

Questions

Code TCP/IP stack

  1. How long should the sender wait for an acknowledgement from the receiver?

  2. What if the receiver cannot process data as fast as it is sent?

    Flow control is required, when the receiver cannot process data as fast it is sent.

  3. What if the network in between (a router, for example) cannot process data as fast as it is sent?

TCP Basics

TCP 是一个面向连接(connection-oriented)的协议。

TCP 的可靠基于超时和重传策略。

TCP 是一个流协议,所以当丢包、包乱序或者包损坏时会 buffer 数据,直到把完整的数据发送给应用层的 socket.

TCP header 中保存着在流中的 index, 这使得流可以分割为若干个段(segments), 而 TCP 可以重新打包它们。

如果 TCP 收到了被损坏的包或者段,直接丢弃之而不需要通知发送端;发送端未收到接收端的 ack 的话,则会重传。

TCP 四层模型

层数 备注
应用层 FTP 协议(21 连接, 20 传输)
运输层 TCP 协议,在不可靠的 IP 层上,提供了一个可靠的运输层,为了提供这种可靠的服务,TCP采用了超时重传、发送和接受端到端的确认分组等机制。
网络层 IP 协议,提供的是一种不可靠的服务。它只是尽可能快地把分组从源节点送到目的节点,但不提供任何可靠性的保证。
链路层 以太网协议、令牌环协议

对比 OSI 的七层模型:

OSI 七层模型
应用层 HTTP, FTP, SMTP, POP3…等应用程序协议,SNMP,SOCKET, S-HTTP 等;计算机用户以及各种应用程序和网络之间的接口。
表示层 信息的语法已经它们的关联,加密解密,压缩解压缩等
会话层 不同用户机器上的用户之间建立以及管理会话,安全协议,目录访问协议
传输层 TCP,UDP;OSI的下三层的主要任务是数据传输,上三层的主要任务是数据处理;该层的作用是保证报文的正确传输;功能有传输连接管理、处理传输差错。
网络层 IP/IPv6, ICMP, IGMP, 控制子网的运行,如逻辑编址、分组传说、路由选择;将数据链路层的数据转化成数据包,通过路径选择、分段组合、顺序、进出路由控制等,将信息从一个网络设备传送到另一个网络设备,解决同意网络内节点之间的通信
链路层 物理寻址,同时将原始比特流转变为逻辑传输线路; 通过各种控制协议,将有差错的物理信道变为无差错的、能可靠传输数据帧的数据链路; 将物理层的数据封装成,传送到上一层,或者将上一层的数据帧拆装为位流形式转发到物理层。
物理层 原始比特流传输,IEEE 802.2, Ethernet v2, Internetwork

TCP Header

        0                            15                              31
       -----------------------------------------------------------------
       |          source port          |       destination port        |
       -----------------------------------------------------------------
       |                        sequence number                        |
       -----------------------------------------------------------------
       |                     acknowledgment number                     |
       -----------------------------------------------------------------
       |  HL   | rsvd  |C|E|U|A|P|R|S|F|        window size            |
       -----------------------------------------------------------------
       |         TCP checksum          |       urgent pointer          |
       -----------------------------------------------------------------

对于 sequence number 而言,the Sequence Number represents the TCP segment’s window index, 握手是存储的是 ISN(Initial Sequence Number).

ACK 段包含了发送端希望接收的下一个字节的窗口索引,握手过后 ACK 这段始终不能为空。

HL 表示 Header Length,其他字段含义如下:

标志位 含义
Congestion Window Reduced © 发送端降低发送速率
ECN Echo (E) 发送端收到拥塞通知
Urgent Pointer (U) 段中包含优先级数
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值