无论是学计算机的,还是物联网设备的,只要与网络相关的专业,我想面试题里最经典的肯定是 TCP 三次握手,和 TCP 四次挥手。
TCP 协议了解
TCP/IP 共有几层?
当然是4层,从上往下分别是:应用层,传输层,网络层,网络接口层.
TCP/IP协议栈 | 举例 |
---|---|
应用层 | HTTP;Telnet;ftp;等 |
传输层 | TCP & UDP |
网络层 | IP,ICMP,ARP,等 |
网络接口层 | 物理接口,设备等 |
可能用到的回答
- TCP 和 UDP 有何区别?
TCP 是提供可靠连接,而 UDP 是提供尽力而为的连接,也就是非可靠连接.
所以 TCP 的连接是点对点连接,而 UDP 只负责把包交出去.
其次二者的头部不同, TCP 的头部有160位的长度,而 UDP 只有32位的长度.
对此二者对资源的需求也是不一样的, TCP 多而 UDP 少.
TCP 报文头部
首先看这个熟悉的图片
里面英文部分是
标签 | 说明 |
---|---|
URG | 说明是紧急数据,尽快传输 |
ACK | 确定,1是确认的 TCP 包,而0不是 |
PSH | 推送,如果发送端 PSH = 1 ,接收端尽快交付给应用进程 |
RST | 复位,如果是1,那么要释放连接,重新连接 |
SYN | 同步比特,在建立连接时同步序号, SYN = 1, ACK = 0 表示一个连接报文,而 SYN = 1, ACK = 1 表示同意建立连接 |
FIN | 终止,当值为 1 的时候,表示数据发送完成,要求释放连接 |
WireShark 知识补充
在 WireShark 界面里应该能看到这个,抱歉我没有进行说明
标签 | 说明 |
---|---|
Frame | 物理层的数据帧概况 |
Ethernet | 数据链路层以太网帧头部信息 |
Internet Protocol Version 4 | 互联网层IP包头部信息 |
Transmission Control Protocol | 传输层的数据段头部信息,此处是TCP |
Hypertext Transfer Protocol | 应用层的信息,此处是HTTP协议 |
补充: 你可以看作倒过来的 TCP/IP 层
WireShark 查看 TCP 三次握手的过程
我们开始向服务器发送请求
第一次连接中, SYN = 1 . Seq = 331(就写后三位,太长记不住)
接下来服务器返回请求
在第二次连接中 SYN = 1, ACK = 1, Seq = 985, ack = 332.
最后我们向服务器进行连接
那个方框里应该是: ACK 变为了1,确认了连接
第三次变为了 ACK = 1, Seq = 332, ack = 986.
此时, 典型的 TCP 三次握手结束,后面就是多线连接,传输数据
所以我们可以得出这么一个经典的图片里的结论