代码改变世界

理解TCP/IP协议模型的小例子

2013-01-12 18:45  lefan  阅读(965)  评论(0编辑  收藏  举报

   TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中译名为传输控制协议/因特网互联协议。想要理解互联网,就必须理解这个模型。以前学网络技术时就没搞明白,它也不太好懂。

    看到阮一峰的博客上给出了个小例子,简单的解释了这个模型。 什么是TCP/IP模型?TCP/IP模型是一系列网络协议的总称,这些协议的目的,就是使计算机之间可以进行信息交换。TCP/IP由四个层次组成:连接层(Link Layer)、网络层(Internet Layer)、传输层(Transport Layer)、应用层(Application Layer)。

可以这样理解它们的作用:

1)连接层负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、wi-fi、ADSL等等;

2)网络层负责分配地址和传送二进制数据,主要协议是IP协议;

3)传输层负责传送文本数据,主要协议是TCP协议;

4)应用层负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是HTTP、FTP等。

 

                                          沿着不同的层应用数据的封装递减

应用数据沿着不同的层的封装递减,这些数据格式有:

1.数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)

2.IP数据包:IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等)

3.TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)

 在70年代设计互联网的原始目的,就是为了传输文本。所有协议最初都是为了这个目标而设计的,互联网架构的核心就是文本对话。

实例:用Telnet建立HTTP对话

为了观察文本在互联网上是如何传输的,做一个小实验。

第一步:点击“运行”命令,输入“telnet google.com 80”。

telnet命令本身就是一个应用层协议,它的作用是在两台主机间,建立一个TCP连接,也就是打开两台主机间文本传输的一个通道。“telnet google.com 80”表示建立本机与google.com在80端口的一个文本传输通道。所谓“端口”其实是TCP协议的一个参数,用来帮助TCP协议判断对方主机传来的文本,到底使用的是哪一种应用层协议。80端口是HTTP协议的端口,就是我们平时浏览网页的端口。

 第二步:打开本地显示。

请按以下步骤操作:在Telnet窗口中按下“Ctrl+]”;然后,输入“set localecho”命令,再连续按下两次回车键。

 

 这时候可以同google.com主机进行对话了。

第三步:试着同Google随便说句“Hello World!”看看有什么反应。

 

 结果,Google的回答是这样的:

 

 “400 Bad Request”说明Google看不懂你的发言。这是毫不奇怪的,因为这时你是在TCP文本通道中,进行HTTP对话。所以,你的发言必须遵守HTTP协议,这样Google才能看懂。

 

第四步:输入“GET / HTTP/1.1”,表示向google索要首页根文件,使用的协议是HTTP的1.1版本。

Google的回应如下:

 "200 OK"表示要求数据成功。在头部信息的下面,就是google在浏览器中显示的首页文件的源代码。

上面这个例子用的是HTTP协议,如果要使用其他协议与主机进行对话,你只要改变端口就行了。端口号在这里,比如,“telnet ftp.website.com 21”,表示用ftp协议进行对话。

所有这些对话的底层协议,都是TCP协议,因为这是负责文本传输的协议;而TCP协议又必须依靠IP协议,进行二进制数据的传输;而二进制数据的传输,离不开最底层负责网络连接的物理协议。

 通过这样四层的网络架构,就实现了整个互联网的通信。