美文网首页程序员
计算机网络-1.了解网络协议

计算机网络-1.了解网络协议

作者: 封不然 | 来源:发表于2018-08-07 22:59 被阅读73次

    既然要讨论网络运维的东西,那首当其冲的应该是去了解我们所使用的计算机网络。就我个人广义上的理解,两台以上设备进行数据交换,就可以简单称之为一个网络。而他们之间是怎么沟通的呢,这就带出了网络第一个概念——协议。

    协议是什么?举个简单的例子,在做看这片文章的应该大部分都是程序员,那么一定可以看得懂以下的一段文字(php)

    public function helloWorld()
    {
        echo 'hello world';
    }
    

    这是我们每个程序员开始学习计算机只是的第一段话“你好,世界”,这就可以称之为一种协议,是人类与计算机相互沟通的一种协议,只有通过这种协议,计算机才能知道我们想要做什么。当然中间过程还是很复杂的,语法解析以及其中编译原理就不进行详述了,只需理解其中三要素,语法,语意,顺序即可。

    上述那个事例是说明人教给一台机器工作的案例,那么对于我们的网络来说,如何教给一大片的机器该做什么呢?这就需要网络协议。

    相信对于大家,HTTP并不陌生,基本在每个网页前都会跟着http/https,这是我们日常上网,浏览网页最常使用的,也是本文想要描述的不同设备间一种沟通约定的协议。

    列举几个我们的一个操作所经历的过程:
    1.地址簿协议DNS/HTTPDNS: 当浏览器中输入一个URL地址,例如 www.baidu.com时,虽然我们知道它的域名,但是不知道具体访问的那台机器的地址是那里,需要用到这个协议去查询,查询到它的IP地址。
    2.超文本传输协议HTTP/HTTPS:知道了目标机器地址以后,需要向目标机器提出自己的诉求,你需要知道什么信息,或者提交上去什么信息,例如买东西,要包含买什么,买多少。
    3.传输控制协议TCP/用户数据报协议UDP:经过上层应用层的包装后,通过传输层进行传输,设置源和目标的端口号,一般来说使用TCP,TCP会保证包能够到达目的地,如果不能到达的话,会补发至到达。
    4.IP协议:经过传输层的包装后,会将请求交给网络层,这就是IP协议,会将源IP地址,目标IP地址都包含进去,也为了目标告知目标是谁给他说的话。这里有一件要说的是,在操作系统中会判断这个地址是给远程的还是给本地的,如果远程的,就要去网关。(设备联网分配IP的DHCP协议再次不做细述)。
    5.ARP协议:上面的包装完成后,请求会交与网关,跟唐僧西行取经的感觉类似,需要过关,交换通关文碟。入网时,经过DHCP分配IP后,所得的默认网关地址一般为192.168.1.1,这时候我们需要知道,谁是192.168.1.1,这时候使用的是ARP,广播询问谁是,网关回应,并会告知本地的MAC地址。(其实便于记忆,就记得,本地基本靠吼就行,哈哈。)
    6.在出发前的最后一步,是交给链路层,MAC层写入mac地址。
    7.路由协议 OSPF/BGP:数据包出网关了之后,可能要一路经历多个路由器才能到达目标服务器,那么中间应该怎么走,一直需要走到最后一个关卡,这时使用到的协议就是路由协议,一般常用的有OSPF和BGP。
    8.请求到达后最后一个网关后,又会采取“本地一声吼”的策略,询问目标地址是谁,目标服务器会回复一个MAC地址来,如果对上了,就会取下MAC头到网络层,对上IP头,就会取下来到传输层(TCP),在这层里,对于每个包都会有回复包,说明已经收到了,具体的可以了解下“三次握手”,不反馈的话,源浏览器还会重试的。TCP头里面会有端口号,告知这个数据应该交给操作系统那个端口的程序进行处理。
    9.程序拿到数据,处理内容,得到相应的结果,会回复一个http的包,跟来的时候一样,再经过上述的流程,回到浏览器请求的源地址,来告知用户操作结果。

    我的天,一个简简单单的操作,可能就是鼠标点击以下就要经过那么多步骤,这还不包括其中如果目标机器是一个集群服务的话(云计算,容器,微服务等),那里该如何处理。

    总结下:
    1.协议三要素:语法,语意,顺序
    2.网络数据包结构:MAC头,IP头,TCP头,HTTP头,数据体
    3.网络五层模型:物理层,链路层,传输层,会话层,应用层;

    相关文章

      网友评论

        本文标题:计算机网络-1.了解网络协议

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