面试题iOS面试收集iOS Developer

面试 -- 网络 TCP/IP

2016-12-31  本文已影响2216人  没阳光的午后

现在面试门槛越来越高,很多开发者对于网络知识这块了解的不是很多,遇到这些面试题会手足无措。本篇文章知识主要集中在 TCP/IP 这块,也会对物理层和数据链路层有简单的介绍。文中知识来自 《图解 TCP/IP》与维基百科,若有错误请大家指出。文章会持续更新。

TCP/IP 基础知识

分组技术

tcp/ip 代表什么

互联网结构

TCP/IP 协议分层模型

TCP/IP 分层模型与通信示例

数据链路层

数据链路的作用

MAC 地址

交换机

帧 frame

以太网帧结构

以太网帧结构

IP 协议

网络层作用

IP 地址

路由控制

IPv6

IP协议相关技术

DNS

ARP

NAT

TCP 与 UDP

传输层协议

TCP 和 UDP 是传输层的两个具有代表意义的协议.

TCP 是面向有链接的,可靠的协议,TCP 建立连接需要三次握手,断开连接需要四次握手.因为效率比不上 UDP 协议.但是 TCP 协议具有重发包,顺序控制等的机制。

UDP 是面向无连接的协议,不提供复杂的控制机制。做的最重要的事情就是分辨应用层协议。多用于视频音频通讯。

传输层的作用是指出具体该把数据包发给哪个应用,通过端口来分辨应用。

端口号

同一个端口不会同时出现,传输层通过辨认端口号来确认应用。但是只靠端口号识别通信是不够的。需要采取五个信息来识别一个通信,分别是源 IP 地址,目标 IP 地址,协议号,源端口号,目标端口号。两个包中只要任何一个信息不同就不是同一个通信。

TCP

三次握手建立连接

主机 A 相与主机 B 建立连接,主机 A 会首先发送一个 SYN 包给主机 B。主机 B 会返回 确认应答 ACK 或者否定应答 NACK。如果这时主机 A 长时间没有收到主机 B 的应答,主机 A 会重发 SYN 包给主机 B,实现了重发数据包的功能。当主机 B 发送 ACK 给主机 A 后,主机 A 也会发送一个 ACK 包给主机 B,这时建立连接。

TCP有顺序控制的功能,通过一个序列号来确认发送的数据。在发送 SYN 包前,假设主机 A 的初始序列号为1000,以该序号依次往下进行数据编号,然后告诉主机 B 初始序列,同时主机 B 会对 A 的序列号进行确认,假如主机 B 返回一个2000的序列号,则代表字节编号为1000 — 1999,表明主机 B 收到1000字节。

为什么不是两次握手

两次握手就建立连接,假如主机 A 发送的 SYN 因网络问题迟迟没有到达主机 B,这时候会重发另一个 SYN 包给 B,当 A 接受到 B 的 ACK 包时建立连接。这时如果第一个 SYN 到达 B 时,主机 B 会认为主机 A 希望再次建立连接,会返回一个 ACK 包给 A。当 A 收到 ACK 时会抛弃掉这个包,因为 A 并不想建立连接,这时主机 B 认为连接已经建立,会一直等待主机 A 发送数据,这样会导致主机 B 的性能损耗。

四次握手断开连接

主机 A 发送 FIN(请求切断连接),主机 B 收到后回复 ACK 和 FIN 包,主机 A 收到主机 B 的 FIN 和 ACK 后发送 ACK 包

TCP首部

TCP首部

序列号码

确认号码,期望收到的数据的开始序列号。

检验和,对整个 TCP 报文段,包括头部和数据以16位字进行计算所得,这时一个强制性字段

UDP头部

UDP头部

报文长度,指定 UDP 报头和数据总共占用的长度。

检验和,用于发现头部信息和数据中的传输错误,该字段在 IPv4中可选, IPv6中强制。

上一篇 下一篇

猜你喜欢

热点阅读