关于TCP/IP,必须知道的十个知识点

本文整理了一些TCP/IP协议簇中需要必知必会的十大问题,既是面试高频问题,又是程序员必备基础素养 。

关于TCP/IP,必须知道的十个知识点

文章插图
 
一、TCP/IP模型
TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议 。
基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层 。下图表示TCP/IP模型与OSI模型各层的对照关系 。
关于TCP/IP,必须知道的十个知识点

文章插图
 
TCP/IP协议族按照层次由上到下,层层包装 。最上面的是应用层,这里面有http,ftp,等等我们熟悉的协议 。而第二层则是传输层,著名的TCP和UDP协议就在这个层次 。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标 。第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备 。
关于TCP/IP,必须知道的十个知识点

文章插图
 
上图清楚地表示了TCP/IP协议中每个层的作用,而TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程 。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地 。出栈的过程,数据接收方每层不断地拆除首部与尾部,得到最终传输的数据 。
关于TCP/IP,必须知道的十个知识点

文章插图
 
上图以HTTP协议为例,具体说明 。
分享一个在腾讯课堂上tcp/ip的训练营的视频 。主要内容:
1. 如何实现单机百万连接;
2. 如何优化三次握手、四次挥手;
3. 如何优化TCP的传输速率;
4. Nginx零拷贝技术的实现;
5. epoll原理剖析和面试必问的问题 。
关于TCP/IP,必须知道的十个知识点

文章插图
 
需要了解学习的朋友可以后台私信【tcp/ip】获取链接及文档资料
关于TCP/IP,必须知道的十个知识点

文章插图
 
二、数据链路层
物理层负责0、1比特流与物理设备电压高低、光的闪灭之间的互换 。数据链路层负责将0、1序列划分为数据帧从一个节点传输到临近的另一个节点,这些节点是通过mac来唯一标识的(MAC,物理地址,一个主机会有一个MAC地址) 。
关于TCP/IP,必须知道的十个知识点

文章插图
 
  • 封装成帧: 把网络层数据包加头和尾,封装成帧,帧头中包括源MAC地址和目的MAC地址 。
  • 透明传输:零比特填充、转义字符 。
  • 可靠传输: 在出错率很低的链路上很少用,但是无线链路WLAN会保证可靠传输 。
  • 差错检测(CRC):接收者检测错误,如果发现差错,丢弃该帧 。
三、网络层
1.IP协议
IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGMP的数据都以IP数据格式传输 。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议:TCP或UDP要做的事情 。
1.1 IP地址
在数据链路层中我们一般通过MAC地址来识别不同的节点,而在IP层我们也要有一个类似的地址标识,这就是IP地址 。
32位IP地址分为网络位和地址位,这样做可以减少路由器中路由表记录的数目,有了网络地址,就可以限定拥有相同网络地址的终端都在同一个范围内,那么路由表只需要维护一条这个网络地址的方向,就可以找到相应的这些终端了 。
  • A类IP地址: 0.0.0.0~127.255.255.255
  • B类IP地址:128.0.0.0~191.255.255.255
  • C类IP地址:192.0.0.0~239.255.255.255
1.2 IP协议头
关于TCP/IP,必须知道的十个知识点

文章插图
 
这里只介绍:八位的TTL字段 。这个字段规定该数据包在穿过多少个路由之后才会被抛弃 。某个IP数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃 。
这个字段的最大值也就是255,也就是说一个协议包也就在路由器里面穿行255次就会被抛弃了,根据系统的不同,这个数字也不一样,一般是32或者是64 。
2.ARP及RARP协议
ARP 是根据IP地址获取MAC地址的一种协议 。
ARP(地址解析)协议是一种解析协议,本来主机是完全不知道这个IP对应的是哪个主机的哪个接口,当主机要发送一个IP包的时候,会首先查一下自己的ARP高速缓存(就是一个IP-MAC地址对应表缓存) 。


推荐阅读