vlambda博客
学习文章列表

面试必考的 TCP/IP 协议到底是什么鬼?

相信不少人在求职时,都看过这样的要求:

  • 精通 TCP/IP,熟练使用 Socket 进行网路编程

面试中也会经常被问到:TCP/IP 协议是什么、三次握手四次挥手等问题。

TCP/IP 为什么这么重要?TCP/IP 协议是互联网的基石,作者鲍勃·卡恩和文顿·格雷被并成为“互联网之父”,30 多年过去了,它仍然是全球互联网得以稳定运行的保证。不管你是做开发、运维还是信息安全的,TCP/IP 协议都是你绕不过去的一环程序员需要像学会看书写字一样,学会这个技能。

今天我们就详细讲解下 TCP/IP 的各个协议。

知识点

  • 域名

  • 端口号

  • 封装和分用

教程出自实验楼课程《TCP/IP 网络协议基础入门》。

实验步骤

上世纪 70 年代,随着计算机技术的发展,计算机使用者意识到:要想发挥计算机更大的作用,就要将世界各地的计算机连接起来。但是简单的连接是远远不够的,因为计算机之间无法沟通。因此设计一种通用的 “语言” 来交流是必不可少的,这时 TCP/IP 协议就应运而生了。

TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议和网络协议的简称,它定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。

TCP/IP 不是一个协议,而是一个协议族的统称,里面包括了 IP 协议、ICMP 协议、TCP 协议、以及 http、ftp、pop3 协议等。网络中的计算机都采用这套协议族进行互联。

下面我们将会学习预备知识。

IP 地址

ifconfig -a

面试必考的 TCP/IP 协议到底是什么鬼?

域名

常见的域名包括 com、net 和 org 三种顶级域名后缀,除此之外每个国家还有自己国家专属的域名后缀(比如我国的域名后缀为 cn)。目前经常使用的域名诸如百度(www.baidu.com)、Linux 组织(www.lwn.net)等等。

例如:

MAC 地址

端口号

服务器的默认程序一般都是通过人们所熟知的端口号来识别的。例如,对于每个 TCP/IP 实现来说,SMTP(简单邮件传输协议)服务器的 TCP 端口号都是 25,FTP(文件传输协议)服务器的 TCP 端口号都是 21,TFTP(简单文件传输协议)服务器的 UDP 端口号都是 69。任何 TCP/IP 实现所提供的服务都用众所周知的 1-1023 之间的端口号。这些人们所熟知的端口号由 Internet 端口号分配机构(Internet Assigned Numbers Authority,IANA)来管理。

常用协议对应端口号:

  • SSH 22

  • FTP 20 和 21

  • Telnet 23

  • SMTP 25

  • TFTP 69

  • HTTP 80

  • SNMP 161

  • Ping 使用 ICMP,无具体端口号

封装和分用

封装:当应用程序发送数据的时候,数据在协议层次当中自顶向下通过每一层,每一层都会对数据增加一些首部或尾部信息,这样的信息称之为协议数据单元(Protocol Data Unit,缩写为 PDU),在分层协议系统里,在指定的协议层上传送的数据单元,包含了该层的协议控制信息和用户信息。如下图所示:

  • 物理层(一层)PDU 指数据位(Bit)

  • 数据链路层(二层)PDU 指数据帧(Frame)

  • 网络层(三层)PDU 指数据包(Packet)

  • 传输层(四层)PDU 指数据段(Segment)

  • 第五层以上为数据(data)

分用:当主机收到一个数据帧时,数据就从协议层底向上升,通过每一层时,检查并去掉对应层次的报文首部或尾部,与封装过程正好相反。

RFC

RFC(Request for Comment)文档是所有以太网协议的正式标准,并在其官网上面公布,由 IETF 标准协会制定。大量的 RFC 并不是正式的标准,出版的目的只是为了提供信息。RFC 的篇幅不一,从几页到几百页不等。每一种协议都用一个数字来标识,如 RFC 3720 是 iSCSI 协议的标准,数字越大意味着 RFC 的内容越新或者是对应的协议(标准)出现的比较晚。

所有的 RFC 文档都可以从网络上找到,其官网为 IETF。在网站上面可以通过分类以及搜索快速找到目标协议的 RFC 文档。目前在 IETF 网站上面的 RFC 文档有数千个,但是我们不需要全部掌握,在工作或学习中如果遇到可以找到对应的解释,理论与实际结合会有更好地效果,单纯阅读 RFC 的效果一般。

作业

第一节的学习到此结束,后续知识点如下,欢迎来实验楼免费学习:

  • 链路层、以太网的特点,常用协议:PPP 协议、SLIP 协议

  • 网络层其他协议:ARP、RARP、ICMP、IGMP,ping 和 traceroute 命令的使用

  • TCP 连接建立、重传等机制

  • UDP 连接建立、差错控制等机制

  • 网络层常用的协议:DNS 协议、FTP 协议、HTTP 协议等

👇👇👇点击阅读原文,免费学习完整课程