博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Web探索之旅 | 第三部分第三课:协议
阅读量:6962 次
发布时间:2019-06-27

本文共 1980 字,大约阅读时间需要 6 分钟。

-- 作者 谢恩铭 转载请注明出处

之前的课中,我们学习了Client-Server模型的客户端语言和服务器语言。

客户端语言有HTML,CSS和JavaScript。

服务器语言有PHP,Java,Python,Ruby,C#,还有新兴的Go语言(Google推出的很强大的编程语言)。

不过,要使得Web中这么多机器之间能够相互通信,例如 客户机A对服务器E说:“你好,请发送baidu.com这个网页给我”,是不能借助客户端或服务器语言的。这些语言只能为我们的网页服务。

那Web种的各个机器之间如何对话呢?

打个比方,电脑A对电脑B说:“您叫什么名字?”(电脑A说中文),电脑B回答:“I beg your pardon?”(电脑B说英语,这句话的意思是“您说什么?”),那么这两台电脑因为语言不通,将会无法交流。

同样的,Web中的各个机器,需要讲同一种语言,才能相互交流。

因此,IT科学家们发明了称为“协议”(Protocol)的通信规范。Web中的机器只要遵循同样协议,就可以相互交流。

协议有好多种,我们不一一列举了。我们只说说常用的一些协议,见下图:

TCP和UDP协议


TCP/IP协议可以说是Web领域最重要的底层协议了。

TCP协议

TCP是Transmission Control Protocol(传输控制协议)的简称。

TCP是一个端到端(Peer-to-Peer)的传输层协议,处于应用层和网络层之间。在数据传输之前,由TCP模块在运行于不同主机上的两个应用程序之间建立直接连接,通常称为虚拟连接,其后的TCP报文在此连接的基础上进行传输。TCP协议在IP协议提供的服务基础上,提供面向连接的、可靠的、全双工的数据流传输服务。所以合称TCP/IP协议。

IP协议(Internet Protocol,互联网协议或网际协议)是TCP/IP的心脏,也是网络层中最重要的协议。 IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。

Vint Cerf,被称为“互联网之父”,译作 温特·瑟夫。主要贡献:与Robert Kahn一道领导TCP/IP协议的研发小组,为 ARPANET 成功开发了主机协议, 使ARPANET成为第一个大规模的数据包网络。

UDP协议


UDP是User Datagram Protocol(用户数据报协议)的简称。是OSI参考模型中一种无连接的传输层协议,它主要用于不要求分组顺序到达的传输中,分组传输顺序的检查与排序由应用层完成,提供面向事务的简单不可靠信息传送服务。

HTTP,HTTPS,FTP和SMTP


HTTP

HTTP是HyperText Transfer Protocol(超文本传输协议)的缩写,所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。我们一般浏览网页,看到的网页地址都是 http:// 这样开头的,后面接域名。例如:

看一个例子,是正常情况下HTTP的交换信息(返回码 200 表示成功):

HTTPS


HyperText Transfer Protocol Secure(安全的超文本传输协议)的缩写,比HTTP多加了一层安全防护。我们有时登录一些网站,就可以看到地址栏最前面变为了https:// 这样开头的的。Https协议在Http协议的基础上,添加了SSL/TLS握手以及数据加密传输,也属于应用层协议。

FTP协议


File Transfer Protocol(文件传输协议)的缩写。是一套允许文件在不同的Internet计算机之间进行交换的规则。它与HTTP不同,后者供网页浏览器请求网页和相关文件以显示某一页面,FTP只是用来将文件FTP协议FTP协议从一台计算机传送到另一台。网站开发人员通常使用FTP将网页从他们自己的计算机传送到服务器,FTP也常常用来将程序和文件从其他服务器下载到个人计算机。

SMTP协议


Simple Mail Transfer Protocol(简单邮件传输协议)的缩写。是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。

总结


各种协议(Protocol)规定了Web中的各台机器如何通信。

下回预告



人世间,

万千情感皆有温度,
千万代码似有性格。
这里有原创教程,IT丛林......
和你一起探索程序人生。
微信公众号「程序员联盟」ProgrammerLeague
我是,在巴黎奋斗的嵌入式软件工程师。
热爱生活,喜欢游泳,略懂烹饪。

你可能感兴趣的文章
vlc android 代码编译
查看>>
elasticsearch集群发现机制:Zen Discovery
查看>>
看这里,智和网管平台的网络拓扑功能更新啦
查看>>
Intent跳转详解
查看>>
mybatis学习笔记(6)-输入映射
查看>>
Android中Preference的使用以及监听事件分析
查看>>
Heroku error:Permission denied (publickey)
查看>>
解决linux的-bash: ./xx: Permission denied
查看>>
Laravel 第三方登陆之 Socialite Providers
查看>>
Ubuntu14.10 remove ibus 之后
查看>>
Spring第一天
查看>>
功能需求流程、流程图制作软件
查看>>
linux 下C语言线程示例 + 线程同步
查看>>
在Fedora、opensuse下删除默认安装的openjdk,并安装oracle jdk的方法
查看>>
springMVC笔记系列(20)——控制器实现详解(下)
查看>>
【软件周刊】Google Chrome 55 发布,默认禁用 Flash;PHP 7.1.0 发布,提供新的语法...
查看>>
guava-布隆过滤器
查看>>
【笔记】浏览器同源策略二三事
查看>>
人脸识别系统原理
查看>>
Linux文件上传下载,rz和sz
查看>>