美文网首页
局域网基础和UDP

局域网基础和UDP

作者: 程序员Darker | 来源:发表于2019-02-27 15:35 被阅读0次

OSI模型和TCP/IP模型

OSI模型

全称:开放式系统互联通信参考模型(Open System Interconnection Reference Model,缩写为 OSI)

七层协议:

  • 应用层:应用程序
  • 表示层:数据格式定义,数据转换/加密
  • 会话层:建立通信进程的逻辑名字与物理名字之间的联系
  • 传输层:差错处理/恢复,流量控制,提供可靠地数据传输
  • 网络层:数据分组,路由选择
  • 链路层:数据组成可发送,接收的帧
  • 物理层:传输物理信号,接口,信号形式,速率

TCP/IP模型

四层协议:

  • 应用层:一个应用APP
  • 传输层:TCP UDP
  • 网络层:IP
  • 网络接口与物理层:MAC

局域网基础

IP地址

IP地址概念:电子设备在网络上的身份标识

网络号:1100 0000.1010 1000.0000 0001.0000 0000 192.168.1.0(网段最小IP地址)

广播地址:1100 0000.1010 1000.0000 0001.1111 1111 192.168.1.255(网段最大IP地址)

IP地址127.0.0.1 ~ 127.255.255.255用于回路测试,如:127.0.0.1可以代表本机IP地址。

子网掩码

子网掩码与IP地址进行位于运算可以确定一个网段

网关

当需要和另外网段进行通信的时候,会把数据交给网关处理
例:

  • 自己 192.168.1.4
  • 目标1 192.168.1.2
  • 目标2 192.168.2.2

自己与目标1在同一网段,可直接通信
自己与目标2不在同一网段,把数据交给网关

MAC地址

由12位十六进制组成,前6位代表厂商号,后6位由厂商自己决定

【注意】:每一台设备的MAC都是不一样的

注册表

  • 445000199002021213 MAC地址
  • 成都市高新区什么路11号 IP地址

端口

  • 为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区别。
  • 端口是运行在传输层的概念,在TCP/IP协议簇中,UDP和TCP这2个协议具备独立的端口号。
  • 端口号是16bit的,表示的范围是0-65535。其中小端口号已经被IANA (Internet Assigned
    Numbers Authority)定义。

在Linux系统下,使用netstat -an查看端口

集线器、交换机和路由器

  • 集线器:只是把设备简单连接在一起,信息会发送给整个网段所有设备,如果设备过多,会发生网络风暴
  • 交换机:交换机也是把设备连接在一起,自带学习功能,会记住设置的MAC地址,信息只会发送给目标主机,相对于集线器来说,不会发生网络网暴
  • 路由器:连接两个不同的网段

UDP编程基础

UDP特点:传输速度快,安全性低

C/S模式

客户端-服务器(Client/Server)架构、C/S架构

UDP简单服务端

from socket import *

# 1.创建对象
udp_server = socket(AF_INET, SOCK_DGRAM)

# 2.绑定端口
udp_server.bind(("", 9999))

# 3.接收消息

while True:
    data, address = udp_server.recvfrom(1024)
    print(f"收到来自{address}的消息:{data.decode('utf-8')}")

UDP简单客户端

from socket import *

# 1.创建一个对象 AF_INET:代表 IP4    SOCK_DGRAM:代表UDP协议
udp_client = socket(AF_INET, SOCK_DGRAM)

# 2.声明要发送的地址
address = ("192.168.196.1", 9999)

# 2.发送消息
udp_client.sendto("你好".encode("utf-8"), address)

网络诊断方法

  1. 物理接口层:这层最大的问题,就是网线没有插好

  2. 网络层

    • 当访问的目的地址是局域网地址时,本机和目的机没有在一个网段。
    • 当访问的目的地址是外网地址时,本机可能没有连接外网的权限。
      本层的检测工具是:ping命令
  3. 传输层

    • 只要双方能ping通,那么如还收不到数据,解决起来就简单多了。
    • 传输层的问题,一般就是服务器开放的端口号,和客户端访问的端口号不一样,那么:
    • 首先在服务端netstat -tuan判断下端口是否开放了,开放的端口号是多少。如果这项判断没问题,那么还有一种可能性就是服务端的防火墙打开了。

相关文章

网友评论

      本文标题:局域网基础和UDP

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