网络通信

Posted baoshuang0205

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络通信相关的知识,希望对你有一定的参考价值。

网络开发的架构:

C/S架构   客户端和服务端  (硬件:京东,淘宝,qq,微信,) (硬件:打印机)

              client: 客户端      享受服务端提供服务

      server: 服务端    给客户提供给服务

B/S架构   浏览器和服务端 (chrom,火狐,360,sogou,IE)

        brower: 浏览器     (所有的B/S架构也是C/S架构    web编程 都是B/S架构的)

俩台机器之间的通信:

技术分享图片

多台机器之间的通信:

      通过交换机

ip地址:

  每台机器在网络中除了有一个mac地址生效,

       还有一个ip地址,虚拟地址,是一个随着时间/空间变化而改变的

ip地址的俩种协议:

      ipv4 :  0.0.0.0 - 255.255.255.255                        4位点分十进制

      ipv6 : 0.0.0.0.0.0 - 255.255.255.255.255.255     6位:(冒号)分十六进制  

特殊的俩种ip地址:

       127.0.0.1  回环地址  测试地址   只有我自己能找到我  不过交换机直接找到自己 访问不到别人

        0.0.0.0

arp协议功能:

      通过要找的哪台机器的ip地址获取到mac地址的过程

技术分享图片

交换机的工作方式:

只认识mac地址,不认识ip地址

单播 : 单独发给某个人或者说某个设备

广播 : 将要找的机器的信息发给局域网内的所有机器

组播:

内网ip和公网ip:

内网ip :校园网 公司的员工网

    保留字段,专门给内网使用的,公网ip永远不会占用内网ip的地址

        192.168.0.1 - 192.168.255.255
        172.168.0.1 - 172.168.255.255
         10.0.0.1 - 10.255.255.255  

       永远不会出现在公网里面        

公网ip : 无论你在哪儿都可以使用的ip
         0.0.0.0 - 255.255.255.255 全球的所有ip地址的集合
              152.168.0.1 - 对应着一个固定的服务 

路由器: 

    路由表

              认识ip地址

    管理网络,联通外网,并且路由转发,就是转发消息

 机器a -->机器b
 机器a -->交换机 -(网关ip)-> 路由器 -...-> 路由器 -(网关ip)-> 交换机 --> 机器b

技术分享图片

 

我怎么知道机器a和机器b不是一个网段的?
子网掩码 : 

    计算目标IP地址是否和咱们是同一网段 同一网段的:广播发送 不同网段的:发送给路由         器 255.255.255.0,
机器a和子网掩码 进行一个按位与 网段信息
机器b和子网掩码 进行一个按位与 网段信息
 两个网段信息一致说明是一个局域网的,不一致说明不在一个局域网  

网关:

   把关用的,公网IP或者外网IP,也可以说是路由器的IP地址   

 网段:  按位与运算: 1和任何数与都得任何数  0和任何数与都是0

 192.168.11.229
 255.255.255.0
 print(bin(192))
 print(bin(168))
 print(bin(11))
 print(bin(229))
 11000000.10101000.00001011.11100101
 11000000.10101000.00001011.10101000
 11111111.11111111.11111111.00000000
 11000000.10101000.00001011.00000000 = 192.168.11.0

 端口:

  标识电脑上某个应用程序,范围0-65535  0-1024 内部程序用的,我们一般使用的都是8000以后的 通 过IP地址+端口:我就能唯一确定一台电脑上的某个应用程序

                                                                                                                                                           192.168.11.229:3306 qq

传递信息的方式
     TCP协议  打电话 : 可靠的面向连接的慢
     UDP协议  发短信 : 不可靠的无连接的快

osi七层:

  应用程 表示层 会话层 传输层 网络层 数据链路层 物理层

osi五层:

  应用程 传输层 网络层 数据链路层 物理层

技术分享图片

 

计算机 :  五层
  应用层 :
  socket :承包了下面四层复杂的数据包的封装  抽象层
  传输层 : tcp/udp 端口     四层路由器  四层交换机
  网络层 : ip地址           三层路由器  三层交换机
  数据链路层 : mac arp协议  二层交换机  网卡
  物理层
 
 二层交换机 :
   数据链路层
   物理层
 三层路由器 :
  网络层
  数据链路层
  物理层

socket ==套接字

    server  服务端

import socket                                #引入网络编程模块
server = socket.socket()                #创建一个socket对象 相当于创建了一部电话
ip_port = (‘192.168.15.50‘,8001)   #创建了一张电话卡
                                                   #绑定IP地址和端口
server.bind(ip_port)                      #插上电话卡
                                                   #监听IP地址和端口
server.listen()                        #开机,后面等待链接的客户端个数为个
                                            #等待客户端的链接
conn, addr = server.accept()  #阻塞住,一直等到有人连接我,
                                            # 连接之后得到一个元祖,里面是连线通道conn和对方的地址(ip+端口)
while True:
                                             #接收消息
    from_client_msg = conn.recv(1024)   #1024为消息大小,单位B,MB = 1024KB,1KB = 1024B
                                                            #接收的消息是bytes类型,需要转换为字符串
    from_client_msg = from_client_msg.decode(‘utf-8‘)
    print(from_client_msg)
    msg = input(‘我:‘)
    conn.send(msg.encode(‘utf-8‘))
#关闭链接
conn.close()
server.close()       
    client 客户端

import socket #引入网络编程模块
client = socket.socket()
server_ip_port = (‘192.168.15.50‘,8001)
                      #链接服务端
client.connect(server_ip_port)
while True:
    msg = input(‘客户想说:‘)
                           #发消息
    client.send(msg.encode(‘utf-8‘))                  #send里面的消息必须是字节类型的
    from_server_msg = client.recv(1024)           #阻塞住,等待接收消息
    from_server_msg = from_server_msg.decode(‘utf-8‘)
    print(from_server_msg)

client.close()

  

 































以上是关于网络通信的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

在tablayout片段之间进行通信[重复]

与另一个片段通信的片段接口

无法通过接口获取与片段通信的活动

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

201555332盛照宗—网络对抗实验1—逆向与bof基础