1、计算机与网络设备相互通信
计算机与网络设备要相互通信, 双方就必须基于相同的方法。 比如:如何探测到通信目标、 由哪一边先发起通信、 使用哪种语言进行通 信、 怎样结束通信等规则都需要事先确定。 不同的硬件、 操作系统之 间的通信, 所有的这一切都需要一种规则。 而我们就把这种规则称为 协议(protocol ['prəʊtəkɒl])
2、TCP/IP
TCP/IP代表(Transmission Control Protocol)传输控制协议 /(Internet Protocol )网际协议,指的是一系列协议总称。
通常使用的网络(包括互联网)是在TCP/IP协议的基础上运作的,而HTTP属于它内部的子集。
3、TCP/IP 协议族按层次分别分为以下 4 层: 应用层、 传输层、 网络层和数据链路层。
-
应用层
- 应用层决定了向用户提供应用服务时通信的活动。TCP/IP 协议族内预存了各类通用的应用服务。 比如,FTP(FileTransfer Protocol, 文件传输协议) 和 DNS(Domain Name System, 域名系统) 服务就是其中两类。
-
传输层
- 传输层对上层应用层, 提供处于网络连接中的两台计算机之间的数据 传输
-
网络层
- 网络层用来处理在网络上流动的数据包。 数据包是网络传输的最小数 据单位。 该层规定了通过怎样的路径(所谓的传输路线) 到达对方计 算机, 并把数据包传送给对方
-
链路层
- 用来处理连接网络的硬件部分。 包括控制操作系统、 硬件的设备驱动、网卡 及光纤等物理可见部分 。 硬件上的范畴均在链路层的作用范围之内。
4、举例说明
我们用 HTTP 举例来说明, 首先作为发送端的客户端在应用层(HTTP 协议) 发出一个想看某个 Web 页面的 HTTP 请求。接着, 为了传输方便, 在传输层(TCP 协议) 把从应用层处收到的数据(HTTP 请求报文) 进行分割, 并在各个报文上打上标记序号及端口号后转发给网络层。在网络层(IP 协议) , 增加作为通信目的地的MAC 地址(Media Access ControlAddress,也叫物理地址)后转发给链路层。 这样一来, 发往网络的通信请求就准备齐全了。接收端的服务器在链路层接收到数据, 按序往上层发送, 一直到应用层。 当传输到应用层, 才能算真正接收到由客户端发送过来的 HTTP请求 (如下图所示)
5、与HTTP 关系密切的协议 : IP、 TCP 和 DNS
-
IP(Internet Protocol) 网际协议位于网络层
- 有人会把“IP”和“IP 地址”搞混, “IP”其实是一种协议的名称。
- IP 协议其实就是计算机网络相互连接进行通信而设计的协议,作用是把各种数据包传送给对方,而要保证确实传送到对方那里, 则需要满足各类条件。 其中两个重要的条件是 IP 地址和 MAC地址(Media Access Control Address)
- IP 地址指IP地址被用来给网络中电脑一个编号。大家日常见到的情况是每台联网的PC上都需要有IP地址,才能正常通信。我们可以把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,而网络中的路由器,就相当于电信局的“程控式交换机”。同时IP指明了节点被分配到的地址, MAC 地址是指网卡所属的固定地址。 IP 地址可以和 MAC 地址进行配对。 IP 地址可变换, 但 MAC地址基本上不会更改 。
- 使用 ARP 协议凭借 MAC 地址进行通信
- IP 间的通信依赖 MAC 地址。 在网络上, 通信的双方在同一局域网 内的情况是很少的, 通常是经过多台计算机和网络设备中转才能连接到对方。 而在进行中转时, 会利用下一站中转设备的 MAC地址来搜索下一个中转目标。 这时, 会采用 ARP 协议(Address Resolution Protocol) 。 ARP 是一种用以解析地址的协议, 根据通信方的 IP 地址就可以反查出对应的 MAC 地址。
路由器的一个作用是连通不同的网络,另一个作用是选择信息传送的线路。选择通畅快捷的近路,能大大提高通信速度,减轻网络系统通信负荷,节约网络系统资源,提高网络系统畅通率,从而让网络系统发挥出更大的效益来。
无线路由器就是在有线路由器的基础上增加了一个无线信号发射的功能。
因为无线信号的传输范围有限,而且无线信号还会受到障碍物的阻挡,只能在小范围内使用。
-
TCP 协议
- TCP 协议能够确保可靠性的传输,而可靠的传输服务是指, 能够把数据准确可靠地传给对方。 其实TCP 协议为了更容易传送大数据才可以把数据进行分割传输, 而且 TCP 协议能够确认数据最终是否送达到对方 。
- TCP 协议能够确保数据到达目标
-
为了准确无误地将数据送达目标处, TCP 协议采用了三次握手(three-way handshaking) 策略。用 TCP 协议把数据包送出去后, TCP不会对传送后的情况置之不理, 它一定会向对方确认是否成功送达。握手过程中使用了 TCP 的标志(flag) —— SYN(synchronize) 和ACK(acknowledgement) 。发送端首先发送一个带 SYN 标志的数据包给对方。 接收端收到后,回传一个带有 SYN/ACK 标志的数据包以示传达确认信息。 最后, 发送端再回传一个带 ACK 标志的数据包, 代表“握手”结束。若在握手过程中某个阶段莫名中断, TCP 协议会再次以相同的顺序发送相同的数据 。
-
-
DNS 域名系统
DNS(Domain(领域) Name System) 服务是和 HTTP 协议一样位于应用层的协议。 它提供域名到 IP 地址之间的解析服务。 计算机既可以被赋予 IP 地址, 也可以被赋予主机名和域名。 比如www.baidu.com 用户通常使用主机名或域名来访问对方的计算机, 而不是直接通过 IP地址访问。 因为与 IP 地址的一组纯数字相比, 用字母配合数字的表示形式来指定计算机名更符合人类的记忆习惯。但要让计算机去理解名称, 相对而言就变得困难了。 因为计算机更擅长处理一长串数字。为了解决上述的问题, DNS 服务应运而生。 DNS 协议提供通过域名查找 IP 地址, 或逆向从 IP 地址反查域名的服务 。
DNS 是因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
- 总结:学习了和 HTTP 协议密不可分的 TCP/IP 协议族中的各种协议后, 我们再通过这张图来了解下 IP 协议、 TCP 协议和 DNS 服务在使用HTTP 协议的通信过程中各自发挥了哪些作用
1、请求报文结构由请求报文首部和请求报文主体
-
请求报文首部由 由请求方法、 URL、请求首部字段和通用首部字段等部分构成
请求首部字段
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cDkayYBG-1637157077887)(.请求首部字段.jpg)]
通用首部字段(请求报文和响应报文两方都会使用的首部。 )
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a1Gx18Td-1637157077888)(.通用首部字段.jpg)]
-
请求报文主体 (其实就是send()方法中数据)
- [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7PYJq8OB-1637157077890)(.请求主体.jpg)]
2、响应报文结构由响应报文首部和响应报文主体
响应首部字段
通用首部字段
- 响应报文主体
3、HTTP 首部字段是由首部字段名和字段值构成的, 中间用冒号“:” 分隔
例如, 在 HTTP 首部中以 Content-Type 这个字段来表示报文主体的 对象类型。 就以上述示例来看, 首部字段名为 Content-Type, 字符串 text/html 是字段值
- 请求首部字段
响应首部字段
通用首部字段
常用的内容编码有以下几种。 gzip(GNU zip) compress(UNIX 系统的标准压缩) deflate(zlib) identity(不进行编码)
格林威治是0时区。
中国是东八区,时间比格林威治的时间早八小时。
即,格林威治的时间,比北京时间晚八小时。
举个例子,北京时间是今天22:00,格林威治的时间就是今天14:00