计算机网络相关

OSI七层模型和TCP/IP五层模型

七层模型,亦称OSI(Open System Interconnection)。参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或七层模型。

它是一个七层的、抽象的模型体,不仅包括一系列抽象的术语或概念,也包括具体的协议。

OSI从高到低分为:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

TPC/IP四层模型从高到底分为:应用层、传输层、网络层、数据链路层。

它将OSI的应用层、表示层、会话层合并为应用层,将数据链路层、物理层合并为数据链路层

在这里插入图片描述
应用层

应用层是网络可向最终用户提供应用服务的唯一窗口,其目的是支持用户联网的应用的要求。由于用户的要求不同,应用层含有支持不同应用的多种应用实体,提供多种应用服务,如电子邮(MHS)、文件传输(FTAM)、虚拟终端(VT)、电子数据交换(EDI)等。

主要协议有:FTP(21端口),SMTP(25端口),DNS,HTTP(80端口)

表示层

表示层的作用之一是为异种机通信提供一种公共语言,以便能进行互操作。这种类型的服务之所以需要,是因为不同的计算机体系结构使用的数据表示法不同。

例如,IBM主机使用EBCDIC编码,而大部分PC机使用的是ASCII码。在这种情况下,便需要会话层来完成这种转换。其他功能例如数据加密,数据压缩。

会话层

会话层提供的服务可使应用建立和维持会话,并能使会话获得同步。会话层使用校验点可使通信会话在通信失效时从校验点继续恢复通信,即对信息的交互实现控制。这种能力对于传送大的文件极为重要。

传输层

传输层是两台计算机经过网络进行数据通信时,第一个端到端的层次,具有缓冲作用。当网络层服务质量不能满足要求时,它将服务加以提高,以满足高层的要求;当网络层服务质量较好时,它只用很少的工作。

传输层还可进行复用,即在一个网络连接上创建多个逻辑连接。传输层也称为运输层。

传输层只存在于端开放系统中,是介于低3层通信子网系统和高3层之间的一层,但是很重要的一层。因为它是源端到目的端对数据传送进行控制从低到高的最后一层。提供端到端的服务,所谓端到端,指的是协议里面标示了一个源端口号和目的端口号,用源端口号和目的端口号可以唯一的而且在全网内标示一个进程。

协议有:UDP/TCP。

网络设备:传输层及传输层以上都用网关进行互联。

网络层

网络层的产生也是网络发展的结果。在联机系统和线路交换的环境中,网络层的功能没有太大意义,当数据终端增多时,它们之间有中继设备相连。此时会出现一台终端要求不只是与唯一的一台而是能和多台终端通信的情况,这就是产生了把任意两台数据终端设备的数据链接起来的问题,也就是路由或者叫寻径。

另外,当一条物理信道建立之后,被一对用户使用,往往有许多空闲时间被浪费掉。人们自然会希望让多对用户共用一条链路,为解决这一问题就出现了逻辑信道技术和虚拟电路技术。

网络层以及网络层以下的各层提供点到点的服务,即提供网络中各个主机之间的数据通信。

协议有:IP/ICMP/IGMP/ARP/RARP

网络设备有:路由器(路由器的工作原理是,A如果要和B通信,A和B通过路由器互联,A从自己的传输层接受到加了TCP/UDP协议头的数据,然后加上IP协议,交给数据链路层,数据链路层加上帧头后交给物理层传输,当路由器接受到A发过来的数据时,依次拆包,并交给路由器的网络层,网络层根据IP地址找到转发端口,然后在检查B和A各自所处的网络协议是否相同,如果不同,路由器拆包后再按照B的网络协议进行依次打包,最后传输给B),三层交换机。

数据链路层

数据链路可以粗略地理解为数据通道。物理层要为终端设备间的数据通信提供传输媒体及其连接。媒体是长期的,连接是有生存期的。在连接生存期内,收发两端可以进行不等的一次或多次数据通信。每次通信都要经过建立通信联络和拆除通信联络两过程。这种建立起来的数据收发关系就叫作数据链路。

而在物理媒体上传输的数据难免受到各种不可靠因素的影响而产生差错,为了弥补物理层上的不足,为上层提供无差错的数据传输,就要能对数据进行检错和纠错。数据链路的建立、拆除,对数据的检错、纠错是数据链路层的基本任务。

网络设备有:网桥(网桥工作原理是:1、作用是网络互连中起到数据接收、地址过滤与数据转发的作用,它用来实现多个网络系统之间的数据交换,2、网桥主要用来连接两个局域网,通过数据链路层的MAC地址判断是否将接收到的数据帧进行转发。主机A和主机B要通信,当网桥收到A发过来的数据后,根据MAC地址和网桥自身软件所维护的一张地址表来判断A和B是否在同一个局域网中,如果在同一局域网则丢弃接受到的帧,如果不在则原封不动的转发给B所在网络),交换机。多个口的网桥就是交换机。

物理层

为数据端设备提供传送数据的通路,数据通路可以是一个物理媒体,也可以是多个物理媒体连接而成.网络设备有:中继器和集线器。多个口的中继器就是集线器(例如:双绞线的传输距离是100M超过整个长度信号就有衰竭不能正常通信,这时我们需要中继器起到扩大信号的作用)。

例子

现在用户A要向用户B进行HTTP通信时,首先激活应用层的80窗口,要求进行文件传输操作。80端口激活后,把数据交给表示层,表示层对数据进行加密、压缩,之后表示层把数据交给会话层,由会话层建立和结束一次会话

但是会话层建立和结束会话,并不自己实现,只是进行会话管理,具体会话建立都是交给传输层做的。传输层选择一种TCP或UDP的方式,只是选择方式,并没有建立连接,传输层选择好方式后,和协议头部一起,交给网络层。网络层为这次会话选择路由,然后加上协议头部,一起交给数据链路层,数据链路层才真正建立这次会话,然后加上帧头,交给物理层,由物理层进行比特流传输。

URL到页面的过程

  1. 输入网址URL
  2. DNS解析成ip地址
  3. 三次握手与服务器建立tcp连接
  4. 建立连接后客户端发送http请求
  5. 服务端接收http请求并响应
  6. 客户端接收响应进行html展示


应用层进行DNS解析域名

我们通常所使用的域名其实计算机并不认识,它们只认识ip地址,ip地址是网络上每台计算机对应的唯一标识,所以第一步需要将域名转化为ip地址,这就是DNS解析。

1、浏览器先会在本地的host文件中查找是否有当前域名的缓存,有则调用
2、如果没有,浏览器会查看本地DNS解析器缓存,有则从缓存调用
3、如果没有,浏览器会查看本地DNS服务器(提供本地连接的服务商),有则调用
4、如果没有,会迭代查询(根域名服务器–>顶级域–>第二子域–>子域)

在这里插入图片描述

迭代查询:
以www.baidu.com为例,如果本地host文件、本地DNS解析器缓存、本地DNS服务器中都没有,就会进行迭代查询。首先从根域名服务器开始,例如www.baidu.com.中最后一个.就是根域名服务器。(根域名拓展链接: http://www.ruanyifeng.com/blog/2018/05/root-domain.html)
根据根域名找到顶级域名的ip后,去顶级域名服务器查找二级域名服务器在哪里并告诉你二级域名对应的ip,以此类推有可能出现三级域名,直到找到输入的url域名所对应的ip,找到后把它缓存到本地,供下次查询使用,过程就是(com -> baidu.com -> www.baidu.com) 第一步就完成了。

建立TCP连接

在得到ip地址以后,传输层便开始建立TCP连接,也就是我们常说的三次握手。

  1. 第一次,客户端发送SYN=1,seq=x,客户端进入SYN_SENT状态
  2. 第二次,服务器端发送ACK=1,SYN=1,seq=y,ack=x+1,服务端进入SYN_RECV状态
  3. 第三次,客户端发送ACK=1,seq=x+1,ack=y+1,成功之后客户端和服务器进入ESTABLISHED(TCP连接成功)状态,完成三次握手。

三次握手具体的事项放在下面讲。

发送http请求

客户端发送一个http请求报文包含四部分:请求行(request line),请求头部(header),空行和请求数据。

1、请求行(request line)

请求行由请求方法字段、URL字段和HTTP协议版本字段三部分构成,它们以空格隔开,例如
GET /pages/info.html HTTP/1.1

方法字段就是HTTP请求使用的方法,常见的有GET/POST

URL 即请求地址,由 <协议>://<主机>:<端口>/<路径>?<参数> 组成

HTTP协议版本有两种 1.0和1.1

2、请求头部(header)

HTTP客户程序(例如浏览器),向服务器发送请求的时候必须指明请求类型(一般是GET或者 POST)。如有必要,客户程序还可以选择发送其他的请求头。大多数请求头并不是必需的,但Content-Length除外。对于POST请求来说 Content-Length必须出现。

3、空行

没有特殊含义,请求头结束标志

4、请求数据

如果请求方法是GET,那么请求数据为空

如果请求方法是POST,那么请求数据就是要提交的内容。例如提交一个表单,其中username=admin,password=123456。那么请求数据就是username=admin&password=123456

总的来说,HTTP请求报文格式如下:
在这里插入图片描述
在这里插入图片描述

服务端接收http请求并响应

服务器:服务器是网络上的高性能计算机,他监听互联网上其他计算机传来的请求,并供给相应的服务。例如文件下载服务,图片上传服务,邮件服务,视频服务等。而客户端主要提供浏览网页,听音乐,看照片的功能等,两者截然不同。

每台服务器都会安装提供服务的应用,web server,例如Apache的tomcat,nginx等。

服务端对客户端进行http响应报文分为三部分:响应行,响应头,响应体。

1、响应行
响应行由HTTP协议版本,HTTP状态码和状态码描述组成,中间由空格隔开,例如
HTTP/1.1 200 OK
其中HTTP/1.1是他的协议版本,200是状态码,OK是状态码描述

HTTP常见状态码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、响应头
响应头用于描述服务器的基本信息,以及数据的描述,服务器通过这些数据的描述信息,可以通知客户端如何处理等一会儿它回送的数据。

设置HTTP响应头往往和状态码结合起来。例如,有好几个表示“文档位置已经改变”的状态代码都伴随着一个Location头,而401(Unauthorized)状态代码则必须伴随一个WWW-Authenticate头。然而,即使在没有设置特殊含义的状态代码时,指定应答头也是很有用的。应答头可以用来完成:设置Cookie,指定修改日期,指示浏览器按照指定的间隔刷新页面,声明文档的长度以便利用持久HTTP连接,……等等许多其他任务。

3、响应体
响应体就是响应的消息体,如果是纯数据就是返回纯数据,如果请求的是HTML页面,那么返回的就是HTML代码,如果是JS就是JS代码,如此之类。

http响应报文格式如下:
在这里插入图片描述

客户端接收响应进行html展示

接收响应以后进行DOM树绘制,然后展示。

发布了24 篇原创文章 · 获赞 11 · 访问量 2422

猜你喜欢

转载自blog.csdn.net/Arthur_feng/article/details/104657018