几种常见网络协议(HTTP、IP、TCP、DNS)与URL/Cookie简介

首先需明确,我们通常使用的网络(包括互联网)是在TCP/IP协议族的基础上运作的,HTTP等只是属于它内部的一个子集。本文将简要介绍TCP/IP协议族、HTTP的概要,并说明IP、TCP、DNS这三个在TCP/IP协议族中与HTTP密不可分的协议,同时引出URI/URL与Cookie的概述。


一、TCP/IP协议族

计算机与网络设备要相互通信,双方就必须基于相同的方法,因此我们需要一种规则来规范这些通信,我们将这种规则称为协议。我们常说的TCP/IP其实是互联网相关的各类协议族的总称。协议中存在各种各样的内容,其中包括电缆的规格、IP地址的选定方法、寻找异地用户的办法、双方建立通信的顺序,以及Web页面显示需要处理的步骤等等。

TCP/IP协议族按层次划分为应用层、传输层、网络层和数据链路层。利用TCP/IP协议族进行网络通信时,会通过分层顺序与对方进行通信。发送端从应用层往下走,而接收端则从链路层往上走。

以HTTP举例:首先,作为发送端的客户端在应用层(HTTP协议)发出一个请求某个Web页面的HTTP请求;接着,传输层(TCP协议)从应用层收到数据(HTTP请求报文)并对其进行分割成若干报文段,并在各个报文上打上标记序号及端口号,然后转发给网络层;网络层(IP协议)在此之上增加作为通信目的地的MAC地址后转发给链路层,此时,发往网络的通信请求就齐全了。接收端的服务器在链路层收到数据后,则按顺序向上发送,一直到应用层。

封装:即发送端在层与层之间传输数据时,每经过一层都会给数据打上一个该层所属的首部信息。而接收端在层与层传输数据时,则会将对应的首部信息消去。

TCP/IP参考模型

二、HTTP简介

HTTP(HyperText Transfer Protocol)即超文本传输协议,Web使用该协议作为规范,完成从客户端到服务器端等一系列的运作流程。HTTP协议定义了客户端如何向Web服务器发送请求以及Web服务器如何向客户端进行响应,可以说Web时建立在HTTP协议上通信的。

应用HTTP协议时,必是一端担任客户端角色,另一端担任服务器端角色。虽然有时两者角色会互换(如P2P模式),但就仅一条通信线路来说,服务器端和客户端的角色是确定的,HTTP协议能够明确区分哪边是服务器端,哪边是通信端。HTTP协议规定了请求从客户端发出,服务器端响应该请求并返回,即建立通信是从客户端开始的,服务器端在没有接收到请求之前不会发送响应。

请求报文由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成。

响应报文由协议版本、状态码、用以解释状态码的原因短语、可选的响应首部字段以及实体主体构成。

HTTP是无状态协议,是一种不保存状态——HTTP协议自身不对请求和响应之间的通信状态进行保存,协议对于发送过的请求或响应都不做持久化处理。HTTP为了更快地处理大量事务、确保协议的可伸缩性,协议本身不保留之前一切的请求或响应报文的信息。但随着Web的快速发展,如今复杂的互联网环境中网站常常需要保存用户的状态,HTTP/1.1虽然是无状态协议,但为了实现保持状态功能,引入了Cookie技术,后文将对Cookie技术进行介绍。

HTTP常用的请求方法(HTTP/1.1)及用途:

GET:通用获取资源

HEAD:获取报文首部(用途如搜索引擎)

POST:传输实体主体

PUT:传输文件

DELETE:删除文件

CONNECT:建立连接隧道用于代理服务器

OPTIONS:询问支持的方法(常用于跨域)

TRACE:追踪路径


三、IP协议

IP(Internet Protocol)网际协议位于网络层,作用是把各种数据包传送给对方,而要保证数据包确实传送成功需满足各类条件,其中两个重要的条件是IP地址和MAC地址(Media Access Control Address)。IP地址指明了节点被分配到的地址,MAC地址是指物理网卡所属的固定地址。IP地址可以和MAC地址进行配对。IP地址可变换,MAC地址基本不会改变。

ARP协议(Address Resolution Protocol)是一种用于解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。


四、TCP协议

TCP(Transmission Control Protocol)传输控制协议位于传输层,提供可靠的字节流服务。字节流服务是指为了方便传输,将大块数据分割成以报文段(segment)为单位的数据包进行管理。而可靠的传输服务是指能够把数据准确地传送给对方。即TCP协议为了更容易传送大数据把数据分割,且能够确认数据最终是否送达到对方。

为了准确无误地将数据送达目标,TCP协议采用了三次握手(three-way handshaking)策略。握手过程中使用了TCP的标志——SYN(synchronize)和ACK(acknowledge)。

三次握手过程:

首先,发送端发送一个带SYN标志的数据包给对方。

其次,接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息。

最后,发送端收到后,再回传一个带ACK标志的数据包,代表“握手”结束。


TCP三次握手及数据传输

注:若在握手过程中某个阶段莫名中断,TCP协议会再次以相同的顺序发送相同的数据包。

除了上述三次握手,TCP协议还有其他各种手段来保证通信的可靠性。


五、DNS服务

DNS(Domain Name System)服务是和HTTP协议一样位于应用层的协议,提供域名到IP地址之间的解析服务。


为什么需要DNS域名解析

计算机既可以被赋予IP地址,也可以被赋予主机名和域名。用户通常使用主机名或域名来访问对方的计算机,而不是直接通过IP地址访问。因为与IP地址的一段纯数字相比,用字母配合数字的地址表示形式更符合人类的记忆习惯。但计算机通常只能处理一长串数字,因此诞生了DNS服务。DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务。

域名解析:将域名映射为IP地址的过程

域名服务器:建立分布式数据库,存储域名与IP地址的映射关系数据。域名服务器根据用户的请求提供域名解析服务


六、URI/URL

我们常说的URL(Uniform Resource Locator,统一资源定位符)就是使用Web浏览器等访问Web页面时需要输入的网页地址。例如,下图的https://www.baidu.com就是URL。


URL

URI为Uniform Resource Identifier的缩写,为统一资源标识符。URI用字符串标识某一互联网资源,而URL表示资源的地点(互联网上所处的位置)。可见URL是URI的子集。RFC2396分别对URI中的这三个单词进行了定义:

·Uniform:规定统一的格式可方便处理多种不同类型的资源,而不用根据上下文环境来识别资源指定的访问方式。另外,加入新增的协议方案(如http:或ftp:)也更容易

·Resource:资源的定义是“可标识的任何东西”。不仅是文档文件、图像或服务(例如当天的天气预报)等能够区别于其他类型的,全都可作为资源。另外,资源不仅可以是单一的,也可以是多数的集合体

·Identifier:表示可标识的对象,也成为标识符

表示指定的URI,要使用涵盖全部必要信息的绝对URI、绝对URL和相对URL。相对URL是指从浏览器中基本URI处指定的URL,如/images/logo.gif。

以下将介绍绝对URI的格式:

绝对URI

1.协议方案名:使用http:或https:等协议方案名获取访问资源时要制定协议类型。不区分字母大小写,最后附一个冒号(:)。也可以使用data:或javascript:这类指定数据或脚本程序的方案名。

2.登录信息(认证):指定用户名和密码作为从服务器端获取资源时必要的登录信息(身份认证)。此项是可选项。

3.服务器地址:使用绝对URI必须指定待访问的服务器地址。地址可以是类似www.baidu.com这种DNS可解析的名称,或是192.168.1.1这类IPv4地址名,还可以是[0:0:0:0:0:0:0:1]这样用方括号括起来的IPv6地址名。

4.服务器端口号:指定服务器连接的网络端口号。此项是可选项,若用户省略则自动使用默认端口号。

5.带层次的文件路径:指定服务器上的文件路径来定位特指的资源。这与UNIX系统的文件目录结构相似。

6.查询字符串:针对已指定的文件路径内的资源,可以使用查询字符串传入任意参数。此项是可选项。

7.片段标识符:使用片段标识符通常可标记出已获取资源中的子资源(文档内的某个位置)。但在RFC中并没有明确规定其使用方法。此项是可选项。


七、Cookie

上文提到,HTTP是无状态协议,它不对之前发生过的请求和响应的状态进行管理。也就是说,无法根据之前的状态进行本次的请求处理。

假设要求登录认证的Web页面本身无法进行状态的管理(不记录已登录的状态),那么每次跳转新页面就要再次登录,或者要在每次请求报文中附加参数来管理登录状态。为了解决这个问题,便引入了Cookie技术。Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。

Cookie会根据从服务器端发送的响应报文内的一个叫做Set-Cookie的首部字段信息,通知客户端保存Cookie。当下次客户端再往该服务器发送请求时,客户端会自动在请求报文中加入Cookie值后发送出去。服务器端发现客户端发送过来的Cookie后,会去检查是哪一个客户端发来的连接请求,然后对比服务器上的记录,最后得到之前的状态信息。


Cookie工作机制

注:

前两个箭头为第一次通信(没有Cookie信息状态下的请求),后两个箭头为第二次以后的通信(存有Cookie信息状态下的请求)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,830评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,992评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,875评论 0 331
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,837评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,734评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,091评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,550评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,217评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,368评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,298评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,350评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,027评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,623评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,706评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,940评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,349评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,936评论 2 341

推荐阅读更多精彩内容