测试工程师面试中几乎必问的问题是“请介绍一下什么是TCP协议?”学过计算机的肯定都知道,但是或许了解得不够深入。我将自己搜集的整理了一下,主要是为自己之后的面试以及工作做点笔记。
下面内容来自链接,非常详细,有需要的可以直接去看。
1、TCP/IP协议是什么?
简单来说,协议就是计算机与计算机之间通过网络实现通信时事先达成的一种“约定“。这种约定使得那些由不同厂商的设备、不同的操作系统组成的计算机之间,只要遵循相同的协议就能够实现通信。
TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。
2、TCP/IP的分层
看到这里可能会有疑问,OSI模型和TCP/IP模型为什么要对照来讲,这里参考链接。简单来说,OSI(open systems interconnection)是ISO(international organization for standards)国际标准化组织制定的协议国际标准,虽然OSI概念清楚,理论也较为完整,但它即复杂又不实用。而TCP/IP分层模型则不同,它得到了非常广泛的应用。
TCP/IP 是一个四层的模型,在学习计算机网路的原理时往往采取折中的方法,即综合 OSI 和 TCP/IP 的优点,采用一种只有五层的体系结构模型。不过,五层模型只是为了介绍网络原理而设计的,实际应用还是 TCP/IP 四层模型。(下图链接)
下面是五层协议的介绍,截图来自链接
3、TCP/IP四层协议的具体介绍
应用层:
向用户提供一组常用的应用程序,比如电子邮件(SMTP)、文件传输访问(FTP)、远程登录(TELNET)等。
SMTP:简单邮件传输协议,端口号是25。附上廖雪峰的python文件发送的教程,挺有意思的,可以自己试着玩一下(来自一个编程渣渣的感慨)
FTP:文本传输协议代理服务器常用端口号:21
HTTP:协议代理服务器常用端口号:80
Telnet:(远程登录)协议代理服务器常用端口号:23
POP3: Post Office Protocol(E-mail),默认端口号为110/tcp
运输层(传输层):
TCP:基于连接、三次握手、四次挥手、保证顺序。用到了socket编程,在客户端和服务端(链接解释得很好,另外廖雪峰得教程上有操作教程)
UDP:基于无连接、不保证顺序
TCP和UDP的区别在链接解释得很好。
网际层:(参考 这里)
网际层主要是解决数据由一个计算机的IP如何路由到目标计算机的过程规范,我们的计算机消息发送出去后,是经过了哪些处理才能正确的找到目标计算机,其中包含了IP、ARP(MAC->IP)、RARP(IP->MAC)、DNS、ICMP等协议。
MAC地址:我们的消息如果要在网络中找到对应的目标计算机,那么我们的计算机一定要有一个唯一的地址标识才行,而能区分我们计算机唯一的标识就是我们的网络适配器地址,我们的网络适配器地址是由厂商生产时候就规定了一个复杂的英文串组成。
IP地址:由于MAC地址是一段复杂的字串组成不利于我们计算机进行逻辑运算,而我们的消息要在网络中快速路由到目标计算机,那么就一定需要有一套逻辑运算的规则,,所以就有了ARP协议,ARP协议规定了如何把MAC地址转换为可以用于逻辑运算的数字IP地址。
域名:因为IP地址过长不方便进行记忆,所以为了让用户更方便记忆所以衍生了DNS的服务,DNS完成了把IP地址转为简单容易记忆的域名地址。
网络访问层:(参考 这里)
网络访问层主要是管理物理网络准备所需要的数据,包括
1、与计算机网络适配器连接。
2、根据合适的方式调整数据传输(不同的传输介质和网络格式不同)
3、把数据转化为电子流或脉冲的形式在传输介质上传输。
4、对发送的数据添加错误检查信息、对接收的数据进行数据检验。