网络编程之网络编程预备知识

网络编程预备知识

1. 网络编程

1.1 网络通信

通信/通讯需要具备两个基本条件:

  • 物理媒介(物理层面)
    • 网线,光纤
  • 协议(软件层面)
  • 网络通信协议

1.2 网络协议层次模型

层次 :把不同的功能封装成不同功能模块。

为什么叫做层次

  • 因为被封装的模块只能按照已有顺序进行调用,不能越级调用

    复制代码
      模块(用户层)----
      B 模块(OS层)----
      C 模块(硬件层)
      A模块不能直接调用C模块,只能通过先调用B模块的接口,通过B模块的接口来调用C
1.2.1 OSI七层模型
  • 应用层
  • 表示层
  • 会话层
  • 传输层
  • 网络层
  • 数据链路层
  • 硬件层
1.2.2 TCP/IP四层模型
  • 应用层

    • 应用协议:http , https , tftp , ftp , DNS , QQ, BT协议,
  • 传输层

    • 主要作用:解决数据如何传输的问题

    • 协议:TCP,UDP

      • TCP Transmission Control protocol 传输层控制协议

        • 是一种面向连接的传输层协议,它可以提供高可靠的通信。

          • 高可靠的通信:即数据无误、数据无丢失、数据无失序、数据无重复到达的一种通信
        • 建立连接/断开连接

          • 三次握手和四次挥手
        • 重发机制 :在 数据传输阶段 ,如果发送方没有在一定时间内收到接收方的确认应答(ACK),就会重新发送之前发送的数据报文,以确保数据能够可靠地到达接收方

        • "面向连接": 意味着在正式通信之前发送,方和接收方需要先建立一条虚拟的连接通道(使用三次握手),通信结束后再拆除这条连接(使用四次挥手)

      • UDPUser Datagram Protocol 用户数据报协议

      • 它是不可靠的无连接协议。

        • 在数据发送之前,因为不需要进行连接就可以直接发送数
      • "实时应用"

  • 网络层

  • IPIP地址(网卡的逻辑上的编号)

    • ICMP
    • IGMP
  • 设备驱动与硬件层

    • 硬件:
      • 网卡
      • 网线
    • MAC 协议
      • MAC地址(网卡的物理地址 48bits

1.3 网络数据怎么传输

分层传输:

  • 封包过程
  • 拆包过程

1.4 某硬件的功能

  • 路由器:主要功能"路由"

    • 选择网络数据包的下一站。
  • 网关:连接两个或以上网络

  • 交换机(switch):

    • 扩展网口
    • 有源:增强信号
  • 猫(modern):调制解调器

    • adsl
    • 光纤

2. 互联网地址(IP地址)

互联网:internet

互联网上的每一个接口(网卡 )都必须要有一个唯一的internet地址(也叫:IP地址)。协议上的逻

辑地址。

进行通信的时候,用到这个IP地址唯一标识一台主机(一个网卡)
IPV4地址:

  • 32bits IP地址

IPV6地址:

  • 128bits IP地址

IPV4地址有32bits,怎么区分?

一般将一个IPV4网络地址分为两步:

  • 按照日常生活中的电话号码类似:

    • 区号
    • 主机号
    • 0731-888888 : 0731区号、888888主机号
  • IPV4地址的32bits

    • 网段号:用来标识某个网段

      • IPV4地址用连续高位表示网段号
    • 主机号:用来标识特定网段中的特定主机的

      • IPV4地址用连续底位表示主机号
  • IPV4地址:32bits用点分式来表示一个IP地址

    • 每8个bit位为一组,中间用.进行分割
      • 比如:
c 复制代码
1010010 01001001 10001100 00000010 --> 不是给人看 给计算机看的
210.73.140.2 -->给人看的,点分式字符串

2.1 IPV4地址分类

  • A类地址:最高位bit位为0,网络号7bits,主机号24bits

    • IPV4地址的范围:0.0.0.0 ~ 127.255.255.255

    复制代码
      00000000 00000000 00000000 00000000 00000000 00000000 ---> 0.0.0.0
      01111111 11111111 11111111 11111111 11111111 11111111 ---> 
      127.255.255.255
    • 私有地址范围:10.0.0.0~10.255.255.255
  • B类地址:最高位bit位为10,网络号14bits,主机号16bits

    • IPV4地址的范围:128.0.0.0 ~ 191.255.255.255

    C 复制代码
    10000000 00000000 00000000 00000000 00000000 00000000 ---> 128.0.0.0
    10111111 11111111 11111111 11111111 11111111 11111111 ---> 
    191.255.255.255
    • 私有地址范围:172.16.0.0~172.31.255.255
  • C类地址:最高位bit位为110,网络号21bits,主机号8bits

    • IPV4地址的范围:192.0.0.0 ~ 223.255.255.255
    • 私有地址范围:192.168.0.0~192.168.255.255
    • D类地址:最高位bit位为1110,(多播组号28bit)
    • 224.0.0.0 ~ 239.255.255.255
    • E类地址:最高位bit位为11110(留待使用)
    • 240.0.0.0 ~ 247.255.255.255

    在设置一个IP地址,还是可以指定这个地址中哪些bits位是网段号、哪些是主机号。
    netmask(子网掩码):就是用来指定一个IP中,哪些是网段号,哪些是主机号
    netmask子网掩码:为1的bit位就是网段号,为0的bit位就是主机号

    c 复制代码
    netmask : 255.255.254.0
    192.168.1.4 和 192.168.2.5 是不是同一个网段 ×不是同一个网段
    11111111 11111111 11111110 00000000 子网掩码
    xxxxxxxx xxxxxxxx 00000001 xxxxxxxx 192.168.1.4
    xxxxxxxx xxxxxxxx 00000010 xxxxxxxx 192.168.2.5

    IP地址是用来唯一的表示网络上的一台主机的,一台主机可能有多个网络应用程序。

2.2 端口号

TCP和UDP采用16bits的端口用来标识应用程序

`IP地址只能唯一标识网络中的主机,但是每台主机上面的网络应用不止一个。既然有多个应用在跑。

从传输层角度划分:

  • TCP应用
  • UDP应用

TCP和UDP的应用端口号是独立。

一台主机的网络应用由:IP地址+传输层协议(TCP/UDP)+端口号进行确定。

端口号由IANAinternet Assigned Number Authority)管理

比较出名端口:1~1023

  • ftp : 21
  • http :80
  • 注册端口:1024~49151
  • 动态和私有端口:49152~6553
相关推荐
新时代牛马1 小时前
OpenSSL引擎 + PKCS11 + SoftHSM2认证
linux
皓月盈江2 小时前
国产Linux银河麒麟操作系统安装开源免费Draw.io(diagrams.net)替代Visio
linux·ubuntu·开源·draw.io·visio·银河麒麟操作系统·diagrams.net
西岭千秋雪_4 小时前
计算机网络学习笔记:TCP可靠传输实现、超时重传时间选择
网络·笔记·学习·tcp/ip·计算机网络
2301_793102494 小时前
linux——C程序的编译与调试
linux
三体世界4 小时前
HTTPS加密原理
linux·开发语言·网络·c++·网络协议·http·https
CBCU4 小时前
关于ubuntu环境下vscode进行debug的随笔
linux·vscode·ubuntu
杜子不疼.4 小时前
结构体的嵌套问题
c语言·c++
浅浅练习两年半4 小时前
5.3 LED字符设备驱动
linux
云资源服务商4 小时前
探索阿里云网络与CDN产品:解锁高效网络体验
服务器·网络·阿里云·云计算
安 当 加 密4 小时前
如何通过密钥管理系统实现数据库、操作系统账号和密码的安全管理
网络·数据库·安全