DNS 域名解析
分为递归解析和迭代解析
https://blog.csdn.net/lycb_gz/article/details/11720247
APR 欺骗
ARP 欺骗是一种在局域网中常用的攻击手段,目的是让局域网中指定的(或全部)的目标机器的数据包都通过攻击者主机进行转发,是实现中间人攻击的常用手段,从而实现数据监听、篡改、重放、钓鱼等攻击方式。
TCP/IP 报文长度和格式
IP 头部信息:头部长度:通常 20 字节,有选项时更长,总共不超过 60 字节。IP 数据报长度:65535 字节。
TCP 协议,在传输层。特点:可靠性。通过连接管理(三握四挥),序列号,确认号,拥塞控制,重传控制来保证可靠性。头部长度:一般为 20 字节,选项最多 40 字节,限制 60 字节。
TCP 最大报文长度 (MSS)
https://blog.csdn.net/codejoker/article/details/5437141
TCP 提供的是一种面向连接的,可靠的字节流服务,TCP 提供可靠性的一种重要的方式就是 MSS。通过 MSS,应用数据被分割成 TCP 认为最适合发送的数 据块,由 TCP 传递给 IP 的信息单位称为报文段或段 (segment)。代表一个 TCP socket 的结构体 struct tcp_sock 中有多个成员用于确定应用数据被分割成最大为多大的数据块较为合适 (最大报文段长度 MSS)。我们不难联想到,跟最大报文段长度最为相关的一个参数是网络设备接口的 MTU,以太网的 MTU 是 1500,基本 IP 首部长度为 20,TCP 首部是 20,所 以 MSS 的值可达 1460(MSS 不包括协议首部,只包含应用数据)。
本地以太网中 MSS 为 1460 的说法并不正确,它还会动态变化,如果 IP 首部和 TCP 首部中出现选项,则 MSS 要相应的减小,一般 TCP 首部中会 有 12 字节的时间戳选项 (外加两字节的填充选项),这时的 MSS 就等于 1448。MSS 的主要作用是限制另一端主机发送的数据的长度,同时,主机本身也控制自己发送数据报的长度,这将使以较小 MTU 连接到一个网络上的主机避免分段。
如果使用 TCP 希望传输一个复杂的对象应该怎么传输?
TCP 中的流是指流入进程或者从进程中流出的字节序列。所以向 Java/golang 等高级语言在进行 TCP 通信是都需要将相应的实体序列化才能进行传输。
TCP/IP 中如何解决粘包问题?如果一直传输数据怎么拆包?
应用层协议,不管是标准的还是自己定义的。“粘包”问题是伪问题。
http://www.hchstudio.cn/article/2018/d5b3/
https://img.hchstudio.cn/TCP.gif
TCP 连接和断开的状态图
connect:
disconnect:
为什么 TCP 连接断开的时候要进行四次握手:
TCP 四次挥手的 TIME_WAIT
时间段长为 2MSL(报文段最大生存时间)
- TIME_WAIT 存在的理由之一是尽可能护送最后的 ACK 达到对端,保证可靠地终止 TCP 链接。
- 假设 tcp 连接是:A(1.2.3.4:8888)——B(6.7.8.9:9999), 这就是一个 tcp 四元组。当 tcp 连接关闭后,四元组释放。TIME_WAIT 存在的理由之二是新旧四元组互不干扰。
RPC
RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC 协议假定某些传输协议的存在,如 TCP 或 UDP,为通信程序之间携带信息数据。在 OSI 网络通信模型中,RPC 跨越了传输层和应用层。RPC 使得开发分布式程序就像开发本地程序一样简单。