美文网首页程序员
网络协议综述

网络协议综述

作者: Leo_up_up | 来源:发表于2020-05-15 15:42 被阅读0次

    要学习网络协议,我们要知道,网络协议有三大要素,分别是语法,语义,顺序

    语法:就是这一段内容要符合一定的规则和格式。例如,括号要成对,结束要使用分号等。

    语义:就是这一段内容要代表某种意义。例如数字减去数字是有意义的,数字减去文本一般来说就没有意义。

    顺序:就是先干啥,后干啥。例如,可以先加上某个数值,然后再减去某个数值。

    不过,只有通过网络协议,才能使一大片机器互相协作、共同完成一件事。

    协议长什么样子呢,我们来看一下

    HTTP/1.1 200 OK

    Date: Tue, 27 Mar 2018 16:50:26 GMT

    Content-Type: text/html;charset=UTF-8

    Content-Language: zh-CN

    <!DOCTYPE html>

    <html>

    <head>

    <base href="https://pages.kaola.com/" />

    <meta charset="utf-8"/> <title>网易考拉3周年主会场</title>

    接下来以双十一为例,说一下网络协议。

    我们在浏览器里面输入 https://www.kaola.com ,这是一个URL。但是浏览器只是知道这给名字,并不知道具体地址,想要知道地址,就只能通过地址簿协议(DNS)或者更精确的(HTTPDNS)去查找,最终就会得到一个这样的地址:106.114.138.24。这个是IP地址,是互联网世界的“门牌号”。

    知道了目标地址,浏览器就开始打包它的请求。对于普通的浏览请求,往往会使用HTTP协议;但是对于购物的请求,往往需要进行加密传输,因而会使用HTTPS协议。无论是什么协议,里面都会写明“你要买什么和买多少”。

    应用层时http请求样式

    DNS,HTTP,HTTPS这些都是应用层的协议,应用层对请求进行了一些封装,然后将请求下发到下一层,即传输层,这里的下发是通过socket编程来实现的。

    传输层有两种协议,分别是无连接的UTP协议和面向连接的TCP协议,面向连接的意思就是,TCP协议会保证这个包一定会到达目的地,如果每到达,就会一直提交直到到达。

    传输层时的请求

    这里的TCP里面有两个端口,分别是浏览器端口和电商端口。操作系统根据端口来判断,它得到的通过socket编程传来的包应该发给哪个进程。

    通过传输层传来的包,浏览器就会将这个包交给操作系统的网络层,网络层的协议是IP协议,它里面包含了源地址和目标地址。

    源地址:浏览器所在机器的IP地址

    目标地址:电商网站机器IP地址

    网络层

    操作系统知道了目标IP地址后,就要去寻找这台机器,而去寻找这样一台机器,就需要网关这样一个东西。

    在操作系统启动的时候,它会被DHCP协议配置一个IP地址以及一个默认的网关192.168.1.1。

    那么怎么将这个地址发送到网关呢,在本地通信的时候,就要靠“吼”,操作系统大喊:谁是192.168.1.1,这时网关就会说,我是,我的地址是村东头,这个村东头就是MAC地址,而大吼的那一个是ARP协议。

    MAC层

    找到网关地址后,操作系统就将IP包发送到下一层,也就是MAC层,MAC层就包含了网关的MAC地址,因此这个包就能顺利的到达网关。

    网关往往是一个路由表,网关收到包后,会根据自己的知识,判断下一步该往哪里走,路由到最后一个时,会找寻目标地址的服务器,它大吼一声,然后目标服务器发来它的MAC地址,通过这个MAC地址,就能寻找到这个服务器并且将包发送到目标服务器上。

    上面这样一个流程是将请求包发出去,从浏览器所在服务器发经过一层层封装发送到目标服务器,当目标服务器接收到时,取下MAC头,发送给网络层,在网络层发现IP地址对上了,就取下IP头,IP头里写上封装,即TCP,取出然后发送给传输层。

    在传输层,即TCP层这里,对于每一个收到的包,都会发送一个包进行回复,来报平安,如果过了一段时间没收到,那么这里会继续重新发送这个包,直到收到了平安到达的回复。这个重试绝非你的浏览器重新将下单这个动作重新请求一次。对于浏览器来讲,就发送了一次下单请求,TCP层不断自己闷头重试。除非TCP这一层出了问题,例如连接断了,才轮到浏览器的应用层重新发送下单请求。

    当平安到达后,也确认平安后,TCP头里面有目标端口号,通过这个端口号,就可以找到正在监听的这样一个服务。

    整体流程 模拟传输,取头发头

    servlet的作用就是是接收浏览器传给服务端的请求(request),并将服务端处理完的响应(response)返回给用户的浏览器,浏览器和服务端之间通过http协议进行沟通,其过程是浏览器根据用户的选择将相关信息按http协议报文的规范组装请求的http报文,报文通过网络传输到指定的服务器,服务器通过特定的web容器接收这个报文信息,例如:tomcat,jetty,jboss这样的web容器,web容器会将http报文解析出来,如果是用户请求,最终解析出来的报文信息会用一个request对象存储起来,服务端使用这个request做完相应的处理后,服务端程序将结果信息封装到response对象里,然后将response对象交给web容器,web容器则把这个response对象转变为http协议的报文,并将报文回传给浏览器,浏览器最后解析这个响应报文,将最终结果展示给用户。

    相关文章

      网友评论

        本文标题:网络协议综述

        本文链接:https://www.haomeiwen.com/subject/eyiwnhtx.html