网络基础之网络协议

1,网络通信原理                                                             

   ⑴互联网的本质就是一系列的网络协议

  每台机器有了自己的操作系统就可以使用了,但如果两台机器之间需要互相联系的话,它们就必须用双方都能听懂的语言来进行交流,世界上有许多的机器,都需要互相沟通,这时候就需要有个统一标准,有个internet上的统一标准,是他们能够互相通信,这种标准就是互联网协议。

   ⑵osi七层协议

互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层

      

每层运行常见物理设备

   ⑶tcp/ip五层模型讲解

   物理层

      计算机之间的网线联通,主要是基于电器特性发送高低电压(电信号)来通信,高对应1,低对应0

   数据链路层

      通过对电信号分组来定义电信号的意思

      以太网协议:   

        早期的时候各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议ethernet

        ethernet规定

        一组电信号构成一个数据包,叫做‘帧’

        每一数据帧分成:报头head和数据data两部分 

        head包含:(固定18个字节)

        发送者/源地址,6个字节

        接收者/目标地址,6个字节

        数据类型,6个字节

        data包含:(最短46字节,最长1500字节)

        数据包的具体内容

        head长度+data长度=最短64字节,最长1518字节,超过最大限制就分片发送

      MAC地址:就是网卡地址,每块网卡出厂都有自己独一无二的MAC地址长度为48位2进制,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号)

      广播:一台计算机需要与另一台通信,有了自己的MAC地址,IP地址,然后广播出去,通过TCP协议发出信息,前提是获取另一台的主机的MAC地址。

       

   网络层

     网络层是OSI参考模型中的第三层,介于传输层数据链路层之间,它在数据链路层提供的两个相邻端点之间的数据帧的传送功能上,进一步管理网络中的数据通信,将数据设法从源端经过若干个中间节点传送到目的端,从而向运输层提供最基本的端到端的数据传送服务。主要内容有:虚电路分组交换和数据报分组交换、路由选择算法、阻塞控制方法、X.25协议、综合业务数据网(ISDN)、异步传输模式(ATM)及网际互连原理与实现。

     网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址路由选择、连接的建立、保持和终止等。它提供的服务使传输层不需要了解网络中的数据传输和交换技术。如果您想用尽量少的词来记住网络层,那就是“路径选择、路由逻辑寻址”。

   ④传输层    

       传输层是ISO OSI协议的第四层协议,实现端到端的数据传输。该层是两台计算机经过网络进行数据通信时,第一个端到端的层次,具有缓冲作用。当网络层服务质量不能满足要求时,它将服务加以提高,以满足高层的要求;当网络层服务质量较好时,它只用很少的工作。传输层还可进行复用,即在一个网络连接上创建多个逻辑连接。传输层在终端用户之间提供透明的数据传输,向上层提供可靠的数据传输服务。传输层在给定的链路上通过流量控、分段/重组和差错控制。一些协议是面向链接的。这就意味着传输层能保持对分段的跟踪,并且重传那些失败的分段。
 
    tcp三次握手和四次挥手

解析:Client(客户端)发请求SYN(代表客户端要向服务端建一条链接),Server(服务端)接下来会返回消息同意连接ACK(代表服务端同意与客户端连接),客户端在发送请求SYN时,还会发一条序列号 seq=x,服务端收到后会回复一个序列号 x+1(服务端会在这个基础上加1再发回来),通常表示是写ACK=x+1。刚才是客户端向服务员发送请求,反过来服务端也会向客户端发一个建立连接的请求,一样的道理,服务端发送SYN,别且序列号为seq=y(选择y是不与前面的弄混),客户端收到后,会回复ACK=y+1,这样两者之间就达成了连接,其实这个过程是4次握手,但是服务段收到客户端发送的连接请求和序列号与服务端向客户端发送的连接请求可以合成1步,这样就变成了图1的3次握手

客户端发送数据给服务端,然后发送断开连接消息,服务端收到后回应。服务端接收完成后也会发送断开消息给服务端,服务端接到后也会返回消息,这当中的发送与接收,断开等都需要发送消息到对方,对方同意了才能进行相应的断开操作,这相互一来一往就是4次挥手 ,这种不同的是当客户端发送文件完成后是可以断开连接,但是接收方的服务端必须统一客户端断开才能进行下去。

  

   应用层

     用户使用的应用程序均工作于应用层,大家都可以开发自己的应用程序,必须规定好数据的组织形式。

      

   ⑥socket

      网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

       

      建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

2,网络通信实现                                                             

网络通信需要实现的话,每一台主机都必备4个要素:

①本机的IP地址

②子网掩码

③网关的IP地址

④DNS的IP地址

要获取这4个要素的方式:

①静态获取(手动获取)

②动态获取(通过dhcp获取)

以太网头---IP头---UDP头---DHCP数据包

步骤:

⑴以太网头发出本机MAC地址(网卡的MAC地址)和接收方MAC地址。发出方MAC地址就是本机网卡的MAC地址,接收方这时不清楚,就输入一个广播地址。

⑵IP头发出本机IP地址和接收方IP地址

⑶UDP头发出发出方端口和接收方的端口(DHCP协议规定好,发出方68端口,接收方67端口)

以上数据构造完后,就可以发出,发出时以太网是以广播形式发出,同一个局域网(子网络)的计算机都可以收到这个数据包,因为收到后仅知道接收方的MAC是看不出发给谁的,所以还必须分析这个包的IP地址,才能确定是不是发给自己的。于是当能确定发出方的IP地址和接收方的IP地址时,DHCP服务器就能确定这个数据包是发给哪里的,而其他的计算机就可以丢弃这个数据包。然后接下来,DHCP服务器解析这个包的内容分配好IP地址,发回去一个DHCP响应数据包(这个数据包类似,以太网头的MAC地址是双方网卡地址,IP头的IP地址是DHCP服务器分析出的双方IP地址,UDP头的发出方端口67和接收方端口68,分配给请求端的IP地址和本网络的具体参数则包含在Data部分。新加入的计算机收到这个响应包,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等等参数。

3,网络通信流程                                                             

1.本机获取

⑴本机的IP地址

⑵子网掩码

⑶网关的IP地址

⑷DNS的IP地址

2,打开浏览器,在地址栏输入想要访问的网站域名

3,DNS协议(基于UDP协议)

4,HTTP协议(可以遵循个人设置的协议)

5,TCP协议(网关协议)

     TCP数据包需要设置端口,发送方和接收方

6,IP协议

     TCP数据包再嵌入IP数据包,IP数据包需要设置双方的IP地址

7,以太网协议(MAC协议)

     IP数据包嵌入以太网数据包,以太网数据包需要设置双方的MAC地址

8,服务器端响应,

     经过多个网关转发,对方网站服务器收到了这些数据,根据IP标头,取出TCP数据包,再独处HTTP请求,接着做出HTTP相应,再通过TCP协议发回来,最后本机收到HTTP响应后就可以进入网站,浏览网页完成通信。

     

     

原文地址:https://www.cnblogs.com/wangyongsong/p/6543263.html