初窥http(3)——简要了解OSI七层模型&TCP/IP 四层模型

一 OSI七层网络模型

 OSI七层协议模型主要是:应用层(Application)、表示层(Presentation)、会话层(Session)、传输层(Transport)、网络层(Network)、数据链路层(Data Link)、物理层(Physical)。下面利用一张图片简要介绍各层的作用。

OSI七层网络示意图

二 TCP/IP四层网络模型

 TCP/IP模型主要讲OSI模型中部分概念合并,概念合并后如下表。

OSI七层网络 TCP/IP四层网络 对应网络协议
应用层(Application) 应用层 HTTP、TFTP, FTP, NFS, WAIS、SMTP
表示层(Presentation) Telnet, Rlogin, SNMP, Gopher
会话层(Session) SMTP, DNS
传输层(Transport) 传输层 TCP, UDP
网络层(Network) 网络层 IP, ICMP, ARP, RARP, AKP, UUCP
数据链路层(Data Link) 数据链路层 FDDI, Ethernet, Arpanet, PDN, SLIP, PPP
物理层(Physical) IEEE 802.1A, IEEE 802.2到IEEE 802.11
  1. OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。
  2. OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。
  3. OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。

三 常见协议的简单介绍

  1. 应用层
  • DHCP(动态主机分配协议)
  • DNS (域名解析)
  • FTP(File Transfer Protocol)文件传输协议
  • Gopher (英文原义:The Internet Gopher Protocol 中文释义:(RFC-1436)网际Gopher协议)
  • HTTP (Hypertext Transfer Protocol)超文本传输协议
  • IMAP4 (Internet Message Access Protocol 4) 即 Internet信息访问协议的第4版本
  • IRC (Internet Relay Chat )网络聊天协议
  • NNTP (Network News Transport Protocol)RFC-977)网络新闻传输协议
  • XMPP 可扩展消息处理现场协议
  • POP3 (Post Office Protocol 3)即邮局协议的第3个版本
  • SIP 信令控制协议
  • SMTP (Simple Mail Transfer Protocol)即简单邮件传输协议
  • SNMP (Simple Network Management Protocol,简单网络管理协议)
  • SSH (Secure Shell)安全外壳协议
  • SSL: 安全套接字层协议;
  • TELNET 远程登录协议
  • RPC (Remote Procedure Call Protocol)(RFC-1831)远程过程调用协议
  • RTCP (RTP Control Protocol)RTP 控制协议
  • RTSP (Real Time Streaming Protocol)实时流传输协议
  • TLS (Transport Layer Security Protocol)传输层安全协议
  • SDP( Session Description Protocol)会话描述协议
  • SOAP (Simple Object Access Protocol)简单对象访问协议
  • GTP 通用数据传输平台
  • STUN (Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议
  • NTP (Network Time Protocol)网络校时协议
  1. 传输层
  • TCP(Transmission Control Protocol)传输控制协议
  • UDP (User Datagram Protocol)用户数据报协议
  • DCCP (Datagram Congestion Control Protocol)数据报拥塞控制协议
  • SCTP(STREAM CONTROL TRANSMISSION PROTOCOL)流控制传输协议
  • RTP(Real-time Transport Protocol或简写RTP)实时传送协议
  • RSVP (Resource ReSer Vation Protocol)资源预留协议
  • PPTP ( Point to Point Tunneling Protocol)点对点隧道协议
  1. 网络层
  • IP(IPv4 · IPv6) Internet Protocol(网络之间互连的协议)
  • ARP : Address Resolution Protocol即地址解析协议,实现通过IP地址得知其物理地址。
  • RARP :Reverse Address Resolution Protocol 反向地址转换协议允许局域网的物理机器从网关服务器的 ARP 表或者缓存上请求其 IP 地址。
  • ICMP :(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
  • IGMP :Internet 组管理协议(IGMP)是因特网协议家族中的一个组播协议,用于IP 主机向任一个直接相邻的路由器报告他们的组成员情况。
  • RIP : 路由信息协议(RIP)是一种在网关与主机之间交换路由选择信息的标准。
  • OSPF : (Open Shortest Path First开放式最短路径优先).
  • BGP :(Border Gateway Protocol )边界网关协议,用来连接Internet上独立系统的路由选择协议
  • IS-IS:(Intermediate System to Intermediate System Routing Protocol)中间系统到中间系统的路由选择协议.
  • IPsec:“Internet 协议安全性”是一种开放标准的框架结构,通过使用加密的安全服务以确保在 Internet 协议 (IP) 网络上进行保密而安全的通讯。

初窥http(3)——浅析http报文

 今天一天给18级新生讲算法,但是呢日更还是得维持,所以就晚上更新一个简单一点的内容。今天的内容主要浅要分析http报文

一 请求报文和结构

 由上图可知,请求报文和响应报文的内容由下面的数据组成。

  1. 请求行

     用于表示请求的方法,请求的URI和HTTP版本
  2. 状态行

     包含表明响应结果的状态码,原因短语和 HTTP 版本。
  3. 首段字段

     包含表示请求和响应的各种条件和属性的各类首部。

     一般有4种首部,分别是:通用首部、请求首部、响应首部和实体 首部。
  4. 其他

     可能包含 HTTP 的 RFC 里未定义的首部(Cookie 等)

二 HTTP传输与压缩

 在http协议中有一种被称为内容编码的功能可以进行内容压缩。常用的内容编码如下:

  • gzip(GNU●zip)
  • compress(UNIX 系统的标准压缩)
  • deflate(zlib)
  • identity(不进行编码)

三 分割发送的分块编码

 分块传输编码会将实体主体分成多个部分(块)。每一块都会用十六进制来标记块的大小,而实体主体的最后一块会使用“0(CR+LF)” 来标记。

 使用分块传输编码的实体主体会由接收的客户端负责解码,恢复到编码前的实体主体。

 HTTP/1.1 中存在一种称为传输编码(Transfer Coding)的机制,它可以在通信时按某种编码方式传输,但只定义作用于分块传输编码中。

四 获取部分内容的范围请求

 http协议中该部分的功能是为了在网速较慢的情况下,能够对大文件断点重传。通过在首部定义Range字段即可完成该功能。

1
2
Range: bytes=5001-10000  单范围
Range: bytes=-3000, 5000-7000 多范围

初窥http(2)——加密版本的http协议https协议

 紧随初窥http(1),这次探索的是现代网站常用的加密协议https。https的主要功能是确保web安全。它主要弥补了http下面的几个不足:

使用明文通信,内容可能会被窃听

无法验证通信方的身份,可能存在伪装的情况

无法验证报文的完整性,报文可能遭到修改。

 这些问题通常会出现在所有非加密的信息传输协议中。为了解决上述的三个问题https应运而生。

一 什么是https

 利用SSL或者TLS的组合使用,加密HTTP的通信内容。通过SSL建立安全通信线路之后,就可以在这条线路上进行HTTP通信。与SSL组合使用的HTTP被称为HTTPS或者HTTP over SSL。

二 对称加密非对称加密

 对称加密和非对称加密是我们常常使用的加密算法,对称加密时通信双方使用同一个密钥,此时如何保障该密钥的传输成为一个重大难题,通常来说在一些必要的情况下设备厂商会在设备内预置一些密钥对,这样在一定程度上保证通信安全。而非对称加密,一对密钥由公钥和私钥组成,私钥解密公钥加密数据,公钥解密私钥加密数据。私钥只能由一个设备保管,但是公钥可以公开给所有人,根据算法相关的知识我们可以知道,这种通信方式更为安全,但是传输速度收到加密解密速度的影响。

 所以在https中,同时使用到了对称加密和非对称加密,非对称加密主要用于服务器的验证,对称加密主要用于大量数据的传输,利用对称加密和非对称加密的特点,共同解决http数据传输时的安全问题。

三 https过程详解

 关于HTTPS安全通信机制和HTTPS的通信步骤,不同人有不同的理解办法,这里引用《图解http》里面的内容来详细介绍这一过程。

摘选书中的内容主要分为下面12个步骤。

  1. 客户端通过发送Client Hello报文开始SSL通信。报文中包含客户端支持的SSL的指定版本、加密组件(Cipher Suite)列表(所使用的加密算法及密钥长度等)。
  2. 服务器可进行SSL通信时,会以Server Hello报文作为应答。和客户端一样,在报文中包含SSL版本以及加密组件。服务器的加密组件内容是从接收到的客户端加密组件内筛选出来的。
  3. 之后服务器发送Certificate 报文。报文中包含公开密钥证书。
  4. 最后服务器发送Server Hello Done报文通知客户端,最初阶段的SSL握手协商部分结束。
  5. SSL第一次握手结束之后,客户端以Client Key Exchange 报文作为回应。报文中包含通信加密中使用的一种被称为 Pre-master secret的随机密码串。该报文已用步骤3中的公开密钥进行加密。
  6. 接着客户端继续发送Change Cipher Spec报文。该报文会 提示服务器,在此报文之后的通信会采用Pre-master secret 密钥加密。
  7. 客户端发送Finished报文。该报文包含连接至今全部报文 的整体校验值。这次握手协商是否能够成功,要以服务器是否能够正确解密该报文作为判定标准。
  8. 服务器同样发送Change Cipher Spec报文。
  9. 服务器同样发送Finished报文。
  10. 服务器和客户端的Finished 报文交换完毕之后,SSL连接就算建立完成。当然,通信会受到SSL的保护。从此处开始进行应用层协议的通信,即发送HTTP请求。
  11. 应用层协议通信,即发送HTTP响应。
  12. 最后由客户端断开连接。断开连接时,发送close_notify报文。上图做了一些省略,这步之后再发送TCP FIN报文来关闭与TCP 的通信。

初窥http(1)——浏览器中输入url后到底发生了什么

 在学校里学习计算机网络的过程中,由于《计算机网络》课本内容较为底层基础,许多人在学习完这本书后都会产生一定的困惑。譬如,现在互联网有哪些地方运用到了哪些协议,这些协议最新的标准是什么样子的等等。为了解决心中的困惑,我决定先对日常中最常用的http-web中所采用的协议进行更深一步的了解,为此我在图灵社区中购置了《图解http》一书。接下来将按照自己的思路从书中获取一些问题的答案。

 本文是购置该书籍后发表的第一篇记录,在这篇记录里,我将揭秘在浏览器中输入url后发生的一系列事情。

浏览器中输入url后主要会发生下面的几件事

一 负责域名解析的DNS服务

 计算机可以被赋予ip地址,同样的也可以被赋予主机名和域名。例如本博客的ip地址是185.199.109.153(github io服务器地址),域名地址为 blog.100innovate.com。我们通常使用域名去访问不同的计算机和网站,域名相比一串数字来说更有利于人们的记忆,但是计算机更擅长于处理ip地址这样的数字。

 为了解决计算机和人的矛盾,DNS服务在这个时候就产生了,通过DNS服务我们可以通过域名查询ip,或者利用ip查询域名。(通常而言,人们仅利用域名查询ip,很少利用ip查询域名)

 在浏览器中输入url并键入回车后的第一步,浏览器将会向DNS服务器发送查询请求,从而获取目标服务器的ip地址。

二 互联网的基础TCP/IP协议

 计算机想要相互通信,就需要一个标准的数据交换协议,这个协议就是TCP/IP协议。通常而言浏览器访问web网站时采用的是TCP协议,TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,为了保证通信的可靠新,首先需要进行三次握手,三次握手的主要流程为:

1.客户端向服务器端发送SYN标记的数据包

2.服务器端向客户端发送SYN/ACK标记的数据包

3.客户端向服务器端发送ACK标记的数据包

 采用三次握手而不是两次握手有许多原因,原因之一是防止延期到达的数据包传输到服务器,服务器会因此创建一个无效的连接。

三 通过HTTP协议传输数据

 HTTP协议的职责是生成针对目标Web服务器的HTTP请求报文,主要有如下的请求方法:

GET:获取资源

POST:传输实体主体

HEAD:获取报文首部

PUT:传输文件

DELETE:删除文件

OPTIONS:询问支持的方法

TRACE:追踪路径

……

 利用上述的数种请求报文向服务器发送请求报文,从而获取用户需要访问的内容。请求报文主要包含请求方法、URI、协议版本三个信息。

 在向服务器发送完请求报文后,服务器会返回请求的结果。当然每一次返回的结果并非绝对正确,为了表达服务器对用户请求的各种状态,http协议设置了规定了状态码,通过返回状态码告知浏览器服务器处理的情况,状态码通常的定义如下:

状态码 类别 含义
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错

 通常来说,只要遵守上述状态码的规则,服务提供商可以自行创建状态码。

 通过上述请求协议和服务器返回报文,最终浏览器可以获得用户需要的数据和信息。

四 浏览器解析并渲染页面

 在浏览器成功获取html信息后,将会按照顺序从头至尾解析html文件,在解析到外部的css、js等其他外部资源文件的时候,根据服务器、浏览器的版本不同将会直接向服务器请求资源文件,或者重新建立TCP连接,然后请求资源文件。值得一提的是,在解析html文件时,浏览器将会构建DOM树,为了加速这一过程,浏览器还会使用预解析等功能。

 在完成html的解析后,浏览器还需要根据浏览器的窗口位置等信息,逐像素的将网页绘制出来。最终我们可以获得想要看到的网页。

五 小结

 通过对《图解http》进行全篇大致浏览,解决了一大问题。但是需要学习的仍然还有人多,譬如现代浏览器一些处理机制问题以及近年来我们常常使用的https与http有什么不同,这些疑惑就留到日后逐一破解。

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×