TCP/IP模型的一个简单解释
TCP/IP模型是互联网的基础。
想要理解互联网,就必须理解这个模型。但是,它不好懂,我就从来没有搞懂过。
前几天,BetterExplained上有一篇文章,很通俗地解释了这个模型。我读后有一种恍然大悟的感觉,第一次感到自己理解了互联网的总体架构。
下面,我按照自己的理解,写一下互联网到底是怎么搭建起来的。说得不对的地方,欢迎指正。
什么是TCP/IP模型?
TCP/IP模型是一系列网络协议的总称,这些协议的目的,就是使计算机之间可以进行信息交换。
所谓"协议"可以理解成机器之间交谈的语言,每一种协议都有自己的目的。TCP/IP模型一共包括几百种协议,对互联网上交换信息的各个方面都做了规定。
TCP/IP模型的四层结构
这些协议可以大致分成四个层次,上一层的协议都以下一层的协议为基础。就像下面这张图:
![bg2009032002.jpg](http://lh4.ggpht.com/_6p3hNkUNWrQ/ScObKm-azpI/AAAAAAAAA78/52k38xkD9j4/s800/bg2009032002.jpg)
从下到上的四层,分别为连接层(Link Layer)、网络层(Internet Layer)、传输层(Transport Layer)、应用层(Application Layer)。
可以这样理解它们的作用:
1)连接层负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL等等;
2)网络层负责分配地址和传送二进制数据,主要协议是IP协议;
3)传输层负责传送文本数据,主要协议是TCP协议;
4)应用层负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是HTTP、FTP等。
理解这个结构的关键,在于理解科学家在70年代设计互联网的原始目的,就是为了传输文本。所有协议最初都是为了这个目标而设计的,互联网架构的核心就是文本对话。
实例:用Telnet建立HTTP对话
为了观察文本在互联网上是如何传输的,我们做一个小实验。
第一步:在"开始"菜单中,点击"运行"命令,输入"telnet google.com 80"。
![bg2009032001.jpg](http://lh6.ggpht.com/_6p3hNkUNWrQ/ScObKQOp_yI/AAAAAAAAA70/8qHj3eH9SOQ/s800/bg2009032001.jpg)
telnet命令本身就是一个应用层协议,它的作用是在两台主机间,建立一个TCP连接,也就是打开两台主机间文本传输的一个通道。
"telnet google.com 80"表示建立本机与google.com在80端口的一个文本传输通道。所谓"端口"其实是TCP协议的一个参数,用来帮助TCP协议判断对方主机传来的文本,到底使用的是哪一种应用层协议。80端口是HTTP协议的端口,就是我们平时浏览网页的端口。常见端口列表可以参考这里。
另外,与Windows 2000和Windows XP不同,Vista系统默认没有安装Telnet客户端,大家可以参考微软公司的安装说明自行安装。如果你使用的是Linux系统,那么可以直接在命令行窗口中,输入上面的命令。
第二步:打开本地显示。(非Windows系统跳过此步。)
请按以下步骤操作:在Telnet窗口中按下"Ctrl+]";然后,输入"set localecho"命令,再连续按下两次回车键。
![bg2009032003.jpg](http://lh4.ggpht.com/_6p3hNkUNWrQ/ScObKqQ2ixI/AAAAAAAAA8E/y_bni9WGzUo/s800/bg2009032003.jpg)
好了,这个时候你就可以直接同google.com主机进行对话了。
第三步:你可以试着同Google随便说句话,看看有什么反应。
我输入了"Hello World!"。
![bg2009032004.jpg](http://lh6.ggpht.com/_6p3hNkUNWrQ/ScObKqqEFiI/AAAAAAAAA8M/q7S2Htybp0k/s800/bg2009032004.jpg)
结果,Google的回答是这样的:
![bg2009032005.jpg](http://lh5.ggpht.com/_6p3hNkUNWrQ/ScObK-x6ZBI/AAAAAAAAA8U/MZnptNO4lHg/s800/bg2009032005.jpg)
"400 Bad Request"说明Google看不懂你的发言。这是毫不奇怪的,因为这时你是在TCP文本通道中,进行HTTP对话。所以,你的发言必须遵守HTTP协议,这样Google才能看懂。
第四步:输入"GET / HTTP/1.1",表示向google索要首页根文件,使用的协议是HTTP的1.1版本。
Google的回应如下:
![bg2009032006.jpg](http://lh6.ggpht.com/_6p3hNkUNWrQ/ScObYMDOWuI/AAAAAAAAA8c/q5xB9qzAfyM/s800/bg2009032006.jpg)
"200 OK"表示要求数据成功。在头部信息的下面,就是google在浏览器中显示的首页文件的源代码。
总结
上面这个例子用的是HTTP协议,如果要使用其他"应用层协议"与主机进行对话,你只要改变端口就行了。比如,"telnet ftp.website.com 21",表示用ftp协议进行对话。
所有这些对话的底层协议,都是TCP协议,因为这是负责文本传输的协议;而TCP协议又必须依靠IP协议,进行二进制数据的传输;而二进制数据的传输,离不开最底层负责网络连接的物理协议。
所以,通过这样四层的网络架构,就实现了整个互联网的通信。
(完)
IP协议, TCP协议 和DNS 服务分别是干什么的? 大家好,我是阿萨。昨天讲解了网络四层协议[TCP/IP协议族分为哪4层?]今天我们学习下IP 协议, TCP 协议和DNS 协议分别是干什么的。
TCP/IP协议族有哪些? 大家好,我是阿萨。昨天我们学习了[URI 和URL 的区别是什么?]了解了URI 和URL的区别。 学习HTTP, 绕不开TCP/IP,那么TCP/IP 协议族分为哪4层?
阮一峰 阿里技术专家。著名技术博客作者,技术方向为 React + Node,自由软件运动的支持者
相关文章
- TCP/IP四层模型
- 一个关于小程序与单片机的通信实例(TCP/IP)
- TCP/IP协议
- 《Sqlserver》通过端口 8080 连接到主机 localhost 的 TCP/IP 连接失败。错误:“驱动程序收到意外的登录前响应。请验证连接属性,并检查 SQL Server 的实例正在主机上运行,且在此端口接受
- TCP/IP滑动窗口
- OSI七层模型与TCP/IP五层模型
- http协议与tcp协议区别
- 抓包整理————tcp 协议[八]
- TCP/IP和Socket的关系
- TCP/IP和Socket的关系
- tcp连接管理
- TCP与UDP在socket编程中的区别
- Qt系列文章013-TCP通信
- 简述osi七层模型和TCP/IP五层模型
- 功能资料比较全面的开源Bootloader OpenBLT,支持USB,CAN,232和TCP/IP(2020-07-28)
- socket http tcp ip 区别联系
- TCP/IP的Socket编程
- 关于 HTTP 和 TCP 的 keep-alive
- 【面试】TCP、UDP、Socket、HTTP网络编程面试题
- Qt 实现简单的TCP通信
- TCP/UDP协议对比分析
- lwip:与tcp发送相关的选项和函数
- 关于分片长度,为什么采用TCP不用IP分片
- 学习笔记之TCP/IP协议分层与OSI參考模型
- 【Windows socket+IP+UDP+TCP】网络基础
- 100集华为HCIE安全培训视频教材整理 | 流量型攻击防范技术-TCP
- tcp/ip协议如何处理环回接口与目标地址为本机地址的数据包?
- LabVIEW开发TCP网络通讯程序2
- OSI七层协议模型、TCP/IP协议及socket套接字
- TCP IP协议之通信详解
- TCP/IP协议详解
- TCP/IP协议详解
- TCP 连接断连问题剖析 from IBM developerWorks