网络协议

网络协议

1.C/S,B/S架构

C:client(客户端)
B:browser(浏览器)
S:server(服务器端)

C/S架构:基于客户端与服务端之间的通信.QQ,游戏,快手等
    优点:个性化设置,响应速度快
    缺点:开发成本,维护成本高,占用空间,用户固定
B/S架构:基于浏览器与服务端之间的通信.火狐浏览器,谷歌浏览器等
    优点:开发,维护成本低,占用空间相对低,用户不固定
    缺点:功能单一,没有个性化设置,响应速度相对较慢
    
    
    mac地址确定计算机在局域网的位置

2.网络通信原理

两台计算机之间的通信原理:
    1.首先通过各种物理连接介质连接
    2.确定对方计算机软件的位置
    3.通过统一的标准(一揽子协议)进行数据的收发

    #互联网的本质就是一系列的协议,总称为"互联网协议",功能:定义计算机如何接入Internet,以及接入Internet    

3.osi七层协议

# 四层				  五层				  七层
											
    										应用层
  应用层		         应用层				表示层
        									会话层
            
  传输层                传输层				传输层
                
  网络层            	 网络层				网络层
                    
                      数据链路层				数据链路层
  网络结构层                      
                        物理层				  物理层
    
    
每层运行常见的物理设备
传输层:四层交换机,四层的路由器
网络层:路由器,三层交换机
数据链路层:网桥,以太网交换机,网卡
物理层:中继器,集线器,双绞线
    
1.物理层
物理层是网络通信的数据传输介质,由连接不同结点的电缆和设备共同构成(指的就是网线,光纤,双绞线等等物理连接介质).
物理层发送的是比特流
功能:利用传输介质为数据链路层提供物理连接,负责处理数据传输并监控数据出错率,以便数据流的透明传输
    
2.数据链路层
数据链路可以粗略理解为数据通道,是为网络层提供数据传送服务的.
数据链路层对比特流进行分组.

以太网协议:
    早期各个公司都有自己的分组方式,后来形成了统一的标准,即以太网协议
以太网协议(ethernet)规定:
    一组电信号构成一个数据报,也就是一帧
    每一数据帧分成:报头head和数据data两部分   (head|data)
    head包含(固定18个字节):
        发送者/源地址:6个字节
        接收者/目标地址:6个地址
        数据类型:6个地址
    data包含(最短46字节,最长1500字节):
        数据包的具体内容
  一帧数据(head长度 + data长度)最少64个字节,最多1518个字节
  发送数据时:一帧数据|一帧数据|一帧数据... 的发送,超过最大限制分片发送 
        
            
mac地址:
    mac地址就是每块网卡出厂时都被烧制上一个世界上唯一的mac地址,长度为48位2进制,通常由12位16进制表示.(前六位为厂商编号,后六位为流水线号)
    
广播:
    发送信息格式:  源mac地址|目标mac地址|数据类型|数据(data)
    同一局域网内,通过广播的方式通信(发送数据).(局域网内所有的计算机都能接收到信息分析消息,不是接收者就丢弃,是接收者就接收)
    广播:计算机只能在局域网内进行广播,范围过大会造成广播风暴且效率极低

交换机mac地址学习功能:
    比如一个交换机的5个接口连接了5台计算机,刚开始默认mac地址如下
		1.FF-FF-FF-FF-FF-FF
        2.FF-FF-FF-FF-FF-FF
        3.FF-FF-FF-FF-FF-FF
        4.FF-FF-FF-FF-FF-FF
        5.FF-FF-FF-FF-FF-FF
接口1的计算机要发送给接口5的计算机:
	源目标mac:1C-1B-0D-A4-E6-44|目标mac:1C-1D-0D-A4-E6-44|数据
会以广播的形式发出,2,3,4,5接口都会收到消息,接口5是目标地址,交换机就会将接口5与mac地址对应上,形成一个mac记录表,以后再发送给接口5,会以单播形式发送
		1.1C-1B-0D-A4-E6-44
        2.FF-FF-FF-FF-FF-FF
        3.FF-FF-FF-FF-FF-FF
        4.FF-FF-FF-FF-FF-FF
        5.1C-1D-0D-A4-E6-44
#前提:必须知道对方的mac地址才可以以广播的形式发送消息,实际上在网络通信中,只要知道对方的IP与自己IP即可


3.网络层

IP协议

IP协议:确定局域网(子网)的位置
IP地址:规定网络地址的协议叫做IP协议,它定义的地址叫做IP地址,广泛采用的版本为IPV4,它规定网络地址由32位二进制表示
IP地址通常写成:四段分十进制,分为两部分.
    网络部分:标识子网
    主机部分:表示主机
    例:192.168.14.12    (取值范围:0-255,0-255,0-255,0-255)
#单纯的ip地址段只是标识了ip地址的种类,从网络部分或主机部分都无法分辨一个ip所处的子网

子网掩码

子网掩码就是表示子网络特征的一个参数,他在形式上等同于IP地址,也是一个32位二进制数字,

知道子网掩码,就可以判断任意两个IP地址是否处在同一个子网络,方法就是将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,则结果为1,否则为0),然后比较结果是否相同,如果相同表明他们处在同一个子网络,否则则不在同一子网.

计算172.16.10.1与172.16.10.2
172.16.10.1   : 10101100.00010000.00001010.00000001
255.255.255.0 : 11111111.11111111.11111111.00000000
AND运算计算结果 : 172.16.10.0
172.16.10.2   : 10101100.00010000.00001010.00000010
255.255.255.0 : 11111111.11111111.11111111.00000000
AND运算计算结果 : 172.16.10.0
结果都是172.16.10.0所以它们在同一个子网络
C类子网掩码,一个网段最多可以承载253台计算机(主机位0为网关,1,255被占用)

如果要给另外一台计算机发送数据,一定要知道对方ip地址

ARP协议
arp协议由来:计算机通信基本靠吼,即广播的方式,所有上层的包到最后都要封装上以太网头,然后通过以太网协议发送,在谈及以太网协议时候,我们了解到
通信是基于mac的广播方式实现,计算机在发包时,获取自身的mac是容易的,如何获取目标主机的mac,就需要通过arp协议
功能:以广播的方式发送数据包,获取目标主机的mac地址

计算机A发送信息给计算机B
数据发送形式: 源mac|目标mac|源IP|目标IP|数据
(1)知道目标mac
以单播的形式发送到交换机,交换机会检测自己的对照表有没有目标mac,如果有则进行单播传播,如果没有交由上一层的路由器,路由器收到信息,对信息进行分析,确定目标计算机与本计算机是否在同一网段,如果在同一网段,直接发送给对应的交换机,交换机再单播发给目标mac.
(2)不知道目标mac
以单播的形式发送到交换机,交换机交由上一层的路由器,路由器收到信息,对信息进行分析,确定目标计算机与本计算机是否在同一网段,如果在同一网段,通过IP以及ARP协议获取到对方的mac地址,然后再通信


4.传输层
传输层:网络层的IP区分子网,以太网层的mac确定主机位置,端口确定软件的位置,所以端口就是应用程序与网卡关联的编号
传输层的功能:建立端口到端口的通信
端口范围:0-65535,0-1023为系统占用端口,自己开发的软件都是8080以后的端口
端口协议:UDP协议,TCP协议
    
TCP(Transmission Control Protocol)可靠的、面向连接的,基于字节流的传输层通信协议(eg:打电话)、流式协议, 传输效率低,全双工通信(发送缓存&接收缓存)、面向字节流。
使用TCP的应用:Web浏览器;文件传输程序。
#可靠传输,TCP数据包没有长度限制,理论上可以无限长,但是为了保证网络的效率,通常TCP数据包的长度不会超过IP数据包的长度,以确保单个TCP数据包不必再分割
#    以太网头|ip头|tcp头|数据

UDP(User Datagram Protocol)不可靠的、无连接的服务,传输效率高(发送前时延小),一对一、一对多、多对一、多对多、面向报文(数据包),尽最大努力服务,无拥塞控制。
使用UDP的应用:域名系统 (DNS);视频流;IP语音(VoIP)。
#不可靠传输,”报头”部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包。
#    以太网头|ip头|udp头|数据

TCP三次握手和四次挥手
三次握手:
    第一次握手:客户端的应用进程主动打开,并向客户端发出请求报文段。其首部中:syn=1,seq=x。
	第二次握手:服务器应用进程被动打开。若同意客户端的请求,则发回确认报文,其首部中:syn=1,seq=x,ack=x+1。
	第三次握手:客户端收到确认报文之后,通知上层应用进程连接已建立,并向服务器发出确认报文,其首部:ack=x+1。当服务器收到客户端的确认报文之后,也通知其上层应用进程连接已建立。

syn洪水攻击:通过制造大量假的无效IP请求服务器,致使正常的IP不能访问服务器.
        
四次挥手:
    第一次挥手:数据传输结束以后,客户端的应用进程发出连接释放报文段,并停止发送数据,其首部:fin=1,seq=y。
	第二次挥手:服务器端收到连接释放报文段之后,发出确认报文,其首部:ack=y+1。此时本次连接就进入了半关闭状态,客户端不再向服务器发送数据。而服务器端仍会继续发送。
	第三次挥手:若服务器已经没有要向客户端发送的数据,其应用进程就通知服务器释放TCP连接。这个阶段服务器所发出的最后一个报文的首部应为:fin=1,seq=y。
	第四次挥手:客户端收到连接释放报文段之后,必须发出确认:ack=y+1.再经过2MSL(最长报文端寿命)后,本次TCP连接真正结束,通信双方完成了他们的告别。

        
#帮助理解:
三次握手:
    第一次握手:
    	Client什么都不能确认   
    	Server确认了对方发送正常
    第二次握手:
        Client确认:自己发送/接收正常,对方发送/接收正常
        Server确认:自己接收正常,对方发送正常
    第三次握手:
		Client确认:自己发送/接收正常,对方发送/接收正常
 		Server确认:自己发送/接收正常,对方发送/接收正常
四次挥手:
    第一次挥手:
        Client请求释放
    第二次挥手:
        Server收到请求,响应释放
    第三次挥手:
        Server完成对Client的请求,响应结束释放
        Server请求释放
    第四次挥手:
        Client响应彻底释放
1.用户进程和服务器进程需要完成一次通信都需要完成三个阶段:
	连接建立
	数据传送
	连接释放
TCP协议中,主动发起请求的一端称为客户端,被动连接的一端称为服务端。由于全双工,不管是客户端还是服务端,TCP连接建立完后都能发送和接收数据。

2.序列号、确认号及标志位等
  (1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。

  (2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。

  (3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:

  (A)URG:紧急指针(urgent pointer)有效。

  (B)ACK:确认序号有效。

  (C)PSH:接收方应该尽快将这个报文交给应用层。

  (D)RST:重置连接。

  (E)SYN:发起一个新连接。

  (F)FIN:释放一个连接。
    
    


posted @ 2019-08-13 20:49  Bugbiss  阅读(229)  评论(0编辑  收藏  举报