TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的协议来完成自己的需求。在介绍TCP/IP协议之前,必须先说说OSI七层网络模型。
OSI网络模型
其实,TCP/IP协议并不是国际标准组织推出的标准协议,而是一个事实标准。国际标准组织推出的是OSI七层网络模型。如下图:
从最顶层的应用层到最底层的物理层,一共有7层,可以通过首字进行简单记忆,也就是“应、表、会、传、网、数、物”。它们的作用分别是:
物理层:电缆、光纤、无线等真实的物理介质,整个虚拟网络的真实载体。其内部进行传输的其实就是高低电平,分别表示1和0,表现形式就是“电压不稳”忽高忽低的电流。通过这种形式,类似101011001001的二进制串就被发送出去。
数据链路层:类似101011001001这样的数串,如果不进行编码,就没有任何意义,神仙都不知道它表示什么,或者你想表示什么,必须有一个统一的规定,统一的“翻译字典”,也就是编码方式来解析其中的意义。这就是数据链路层进行的主要工作。那么由谁来做这个工作呢?网卡!现代网络规定,每台计算机都必须有一块网卡(或虚拟网卡),通过它才能连接网络。每块网卡都必须有一个出厂设置世界唯一的MAC地址,也就是这块网卡的“身份证号”;
网络层:101011001001我们有了,编码方式我们有了,接下来该把数据往哪发呢?世界这么大,如何找到正确的地点?通过MAC地址,确定了每台主机的唯一位置,但我们并不知道如何到达那个位置,也就是不知道去那里的“路”。网络层就是为了解决路的问题。IP协议是网络层事实上的标准协议,它以类似111.111.111.111的方式,将全世界所有的因特网内的主机连在一起,并分别设定IP地址,通过路由的方式,数据包就能知道发往目的地址的正确路径。但这里还有个问题,那就是目标主机内可能同时运行了很多在进行网络通信的程序,那么如何找到正确的对应程序呢?通过端口port!一个IP地址+端口能够唯一确定一个服务程序;
传输层:通过上面三层的努力工作,数据已经送到目标手中,貌似一切ok了?但是目标服务却说“你这数据不合规范不是我想要的”,或者说“哎呀,我还没准备好,你怎么就来了呢?”计算机不是人,没有那么高的智商(至少目前没有),它有它自己规定好的业务逻辑,你必须在正确的时候正确的地点将正确的数据送给它,它才会正确的使用数据(好麻烦)!传输层就是负责在两者之间进行传输逻辑控制的协议。典型的代表就是TCP协议的三次握手连接和四次挥手断开逻辑;
应用层、表示层、会话层:这下是什么都ok了,只剩下数据的利用了。这三层都与应用、具体程序、交互界面等相关,对于用户,其实就是类似QQ、浏览器、迅雷之类的东西。运行是类似FTP/HTTP/SMTP等应用协议,那都是另外一个界面的内容了。
从网络数据包的就够来看,通过几层协议的封装,原始的数据会变成这样:MAC报头(IP报头(TCP报头(原始数据))),数据包变大变臃肿了很多,但还没法省略,少了任何一个都不行。数据包被发到目的地后,又像剥洋葱一样逐层被解包,最后还原成原始数据。
TCP/IP网络模型
网络的发展史是一部”混乱“向”秩序“发展的历史,是一部妥协与斗争的历史,是一部“民间”战胜“*“的历史,有兴趣的可以看看专门的网络发展史文献。国际标准组织推出的OSI七层网络模型,看起来”高富帅“,实际上分得太细,比较复杂,有点冗余。而TCP/IP网络模型作为”民间“出身,只设置了四层网络,较为简单和实用,因此被各大国际厂商推广,成为行业事实标准,OSI七层网络模型则被用作学校进行网络基础教育的示范和典型。TCP/IP网络模型四层模型从根本上和OSI七层网络模型是一样的,只是合并了几层,具体如下:
在TCP协议中,最经典的是如下的建立连接和断开连接的过程: