互联网通信协议

互联网通信协议

OSI七层或五层协议

'''
应用层,表示层,会话层,传输层,网络层,数据链路层,物理层
这些是七层协议,但是应用层,表示层和会话层可以合成应用层
因此也可以是五层协议
'''

'''
物理层:
    主要是发送一个一个的二进程,对上面来的数据做一个编码成二进制
    
数据链路层:
    定义了电信号的分组方式
    即以太网协议
    
网络层:
    网络地址
    ip/子网掩码
    这里呢用ip与子网掩码的二进制进行与运算,看得到的结果,如果目标计算机与本机得到的结果一致,则他们在同一个局域网内。
    ip协议的作用呢有两个,一个是为一台计算机分配IP地址,另一个是确定哪些地址在同一个局域网内。
        比如,已知IP地址172.16.10.1和172.16.10.2的子网掩码都是255.255.255.0,请问它们是否在同一个子网络?两者与子网掩码分别进行AND运算,
        172.16.10.1 -> 10101100.00010000.00001010.000000001
        255255.255.255.0 -> 11111111.11111111.11111111.00000000
        AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0
        172.16.10.2 -> 10101100.00010000.00001010.000000010
        255255.255.255.0 -> 11111111.11111111.11111111.00000000
        AND运算得网络地址结果:10101100.00010000.00001010.000000001->172.16.10.0
        结果都是172.16.10.0,因此它们在同一个子网络。
传输层:
    建立端口到端口的通信(端口范围0-65535,0-1023为系统占用端口)
    tcp和udp的三次握手
    
应用层:
    规定应用数据的格式
    
'''

以太网解封装过程

封装过程


应用层:                                         data
传输层:                                     data+tcp/udp的报头
网络层:                                 data+tcp/udp的报头+IP报头
数据链路层:                          data+tcp/udp的报头+IP报头+以太帧头
物理层:                                       转成二进制


解封的过程,,就是反方向一层一层剥开

ARP协议

用途:
   1.可以把ip解析成mac地址
   2.表示子网地址
简介:
   1.通信第一步先拿到目标主机的ip地址
   2.判断出目标主机与自己是否在一个子网内
       如果在一个子网内:
            源主机-->本地交换机-->目标主机
               '''
               1.拿到目标主机的ip和子网掩码
               2.ARP协议算出本机的网络地址,目标主机的网络地址
               3.因为在一个子网内通信,靠的是mac地址,发送ARP协议的广播包拿到目标主机的mac地址,格式如下:
                      自己的mac地址 + FF-FF-FF-FF-FF-FF + 本机ip/子网掩码 + 目标主机ip/子网掩码 + data
              4.发起真正的通信:
                  自己的mac地址 + 目标主机的mac地址 + 本机的ip/子网掩码 + 目标主机的ip/子网掩码 + 本机端口 + 目标端口 + data
               '''
        如果不在一个子网内:
            源主机 --> 本地交换机 --> 本地路由器 --> 公网 --> 目标路由器 --> 目标交换机 --> 目标主机
                '''
                1.拿到目标主机的ip/子网掩码
                2.ARP协议算出本机的网络地址,目标主机的网络地址
                3.不在一个子网内,即靠路由器把数据包转发出去
                     发送ARP协议的广播包拿到网关的mac地址,格式如上
                          这里到公网以后源主机ip就会变成公网的ip
                4.发起真正的通信,格式如上
                '''

子网划分

子网划分就是把子网掩码加1
'''
	192.168.10.{0-255}/24
		192.168.10.11/24 ----> 192.168.10.0
		192.168.10.200/24 ----> 192.168.10.0
		
	192.168.10.{0-255}/25
		192.168.10.11/25
			11000000.10101000.00001010.00001011
			11111111.11111111.11111111.10000000
			
			11000000.10101000.00001010.00000000 -> 192.168.10.0
			
		192.168.10.200/25
			11000000.10101000.00001010.11001000
			11111111.11111111.11111111.10000000

			11000000.10101000.00001010.10000000 -> 192.168.10.128
'''

ip地址的结构和分类

ip地址被分为A,B,C三类
A类:
   8位网络号,24位主机号
       这样一来,每个网络下可以有很多个主机
B类:
   16位网络号,16位主机号
       中规中矩,适用于那些公司
C类:
   24位网络号,8位主机号
        这样子,网络就可以有好多个,每个网络下只有244个主机
        
127.0.0.1 
   回送地址,用于回路测试

二层隔离与三层隔离

两台计算机接入不同的交换机,称之为二层隔离
子网地址不同,称之为三层隔离

结论:
   1.二层隔离与三层隔离要保持一致
   2.二层联通,三层可以隔离,即两台计算机接入了同一个交换机,不一定在一个局域网内

tcp与udp协议

tcp可靠

upd不可靠

tcp的三次握手:

imageimage

客户端向服务端发送一个连接请求,服务端处于监听状态,然后响应客户端的请求,服务端接受并且发送一个连接请求给客户端,客户端给服务端回一个连接成功

tcp的四次挥手

image

tcp和udp的区别

tcp可靠:
   每发一条数据,都需要对方回复一个ack确认信息,之后才删除
udp
   每发一条数据,不需要对方确认,会直接删掉

SYN洪水攻击

服务机模拟客户像服务端发送请求,沾满这个半连接池,使得真正的客户的请求进不来。
应该调大半连接池。

ip的特殊地址

本地回环地址:
    127.0.0.1    做回环测试
    网关地址通常:  192.168.1.1     192.168.0.1
    本网段广播地址:指的是32位全位1(即255.255.255.255)的ip地址
    全网广播地址:具有正常的网络号部分,而主机号部分全为1(即255)的ip地址称之为广播地址
    私网地址:
       A:10.0.0.0~10.255.255.255
       B:172.16.0.0~172.31.255.255
       C:192.168.0.0~192.168.255.255

socket套接字

socket是对传输层及其以下的封装,应用程序产生的数据包想要往外传输直接传给socket就可以了,socket会完成后续的封装

cs与bs架构

cs:
    client----------------------------------server
bs:
    browser(超级客户端)----------------------server

dns , dhcp

dns:
   域名解析
浏览器DNS缓存-->本地系统DNS缓存-->本地计算机HOSTS文件--->ISP  DNS缓存--->递归or迭代搜索

dhcp服务端口67
dns服务端口53
dns查询的两种方式
   1.递归:
      主机向本地域名服务器的查询一般采用的都是递归查询。递归查询就是如果主机询问的本地域名服务器不知道被查询的域名的IP地址,那么本地域名服务器就以DNS客户的身份向其他根域名发出查询你请求报文(即替主机查询),而不是让主机自己进行下一步查询。因此,递归查询返回的结果或者是所要查询的IP地址,或者是报错,表示无法查询到所需的IP地址。
   2.迭代:
      本地域名服务器向根域名服务器的查询的迭代查询。迭代查询的特点:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地服务器进行后续的查询。根域名服务器通常是把自己知道的顶级域名服务器的IP地址告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询。顶级域名服务器在收到本地域名服务器的查询请求后,要么给出所要查询的IP地址,要么告诉本地服务器下一步应当向哪一个权限域名服务器进行查询。最后,知道了所要解析的IP地址或报错,然后把这个结果返回给发起查询的主机。

网络通信整体流程

实现网络通信的四个要素:
   本机的IP地址
   子网掩码
   网关的IP地址
   DNS的IP地址
获取四要素的两种方式
   1.静态获取即手动配置
   2.动态获取即通过dhcp获取
   
   
网络通信流程:
  (1) 本机获取,本机的IP地址,子网掩码,网关的IP地址,DNS的IP地址
  (2) 打开浏览器,输入想要访问的地址
  (3) dns协议(基于udp协议)
  (4) HTTP部分内容,
            GET / HTTP/1.1
            Host: www.google.com
            Connection: keep-alive
            User-Agent: Mozilla/5.0 (Windows NT 6.1) ……
            Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
            Accept-Encoding: gzip,deflate,sdch
            Accept-Language: zh-CN,zh;q=0.8
            Accept-Charset: GBK,utf-8;q=0.7,*;q=0.3
            Cookie: … …
        我们假定这个部分长度为4960字节,它会被镶嵌在TCP数据包之中。
  (5) TCP协议
       TCP数据包需要设置端口,TCP数据包的标头长度为20字节,加上嵌入HTTP的数据包,总长度变为4980字节
  (6) IP协议
        TCP数据包在嵌入IP数据包。IP数据包需要设置双方的IP地址,IP数据包的标头长度为20字节,加入嵌入的TCP数据包,总长度变为5000字节。
   (7)  以太网协议
         最后,IP数据包嵌入以太网数据包。以太网数据包需要设置双方的的MAC地址。
         以太网数据包的最大长度为1500字节,因此上面来的IP数据包必须分成四个包。而每个包都有自己的IP标头(20字节)。
   (8)  服务端响应
          根据IP标头的序号,浏览器将四个包拼起来,取出完整的TCP数据包,然后读出里面的‘HTTP请求’,接着做出‘HTTP响应‘,在用TCP发回来。
posted @ 2021-06-17 16:16  剧终cur  阅读(324)  评论(0)    收藏  举报