当前位置: 首页 > article >正文

网络编程 day01

网络编程 day01

  • 0. 网络编程课程介绍
  • 1. 认识网络
    • 1.网络发展史
    • 2.局域网与广域网
      • 局域网(LAN)
      • 广域网(Wan)
    • 3.光猫
    • 4.路由器
    • 5.交换机与路由器
    • 6.网线
  • 2. IP
    • 1. 基本概念
    • 2. 网络号/主机号(二级划分)
    • 3. IP地址分类
      • 整体分类
      • 特殊地址
    • 4.子网掩码(MASK)
    • 5. 练习
    • 6. 三级划分
  • 3. 网络模型
    • 网络的体系结构
    • OSI模型
    • TCP/IP
    • OSI和TCP/IP的对应关系
    • 常见协议
    • DNS
    • 网络调试命令
      • ping
      • netstat
      • ifconfig
      • 手机调试工具
  • 4. socket
    • 1. socket 发展
    • 2. socket 介绍
    • 3. 为什么需要socket?
    • 4.socket类型
    • 5. 位置
    • 6. TCP/UDP
  • 5. 端口号 port
  • 6. 字节序

0. 网络编程课程介绍

  1. 网络基础:IP、子网掩码、端口号、网络基础模型(OS、TCP/IP)、传输协议
  2. socket:TCP、UDP模型、广播、组播、协议分析、抓包工具的使用、IO多路复用、并发服务器
  3. SQL数据库
  4. TCP实现FTP、电子词典

1. 认识网络

1.网络发展史

ARPnetA (阿帕网) ---- Internet (因特网) ---- 移动互联网 ---- 物联网

TCP/IP
用来检测网络传输中差错的传输控制协议--------TCP
专门负责对不同网络进行互联的互联网协议-----IP

2.局域网与广域网

局域网(LAN)

 局域网的缩写是LAN,local area network,顾名思义,是个本地的网络,只能实现小范围短距离的网络通信。我们的家庭网络是典型的局域网。电脑、手机、电视、智能音箱、智能插座都连在路由器上,可以互相通信。局域网,就像是小区里的道路,分支多,连接了很多栋楼。

广域网(Wan)

 广域网(Wide Area Network)是相对局域网来讲的,局域网的传输距离比较近,只能是一个小范围的。如果需要长距离的传输,比如某大型企业,总部在北京,分公司在长沙,局域网是无法架设的。广域网,就像是大马路,分支可能少,但类型多,像国道、省道、高速、小道等,连接了很多大的局域网。

怎么上网?
第一,通过因特网,只需要办一根宽带,就实现了通信,非常方便,现在的宽带价格也比较便宜。
第二,通过广域网专线。
所以为了数据安全,不能连接因特网,需要用一条自己的专用线路来传输数据,这条线路上只有自己人,不会有其他人接入,且距离很远,这个网络就叫 “广域网”。

3.光猫

 光猫是一种类似于基带modem(数字调制解调器)的设备,和基带modem不同的是接入的是光纤专线,是光信号。用于广域网中光电信号的转换和接口协议的转换,接入路由器,是广域网接入。
猫的作用:将光(模拟)信号转化为数字信号
早期:电话线
现在:光纤

4.路由器

路由器:用于连接局域网和外网
 路由器需要区分WAN口和LAN口,WAN口是接外网的(从Modem出来的或者从上一级路由器出来的),LAN口是接内网的,现在路由器都带无线功能,本质上无线接入就是LAN

5.交换机与路由器

交换机工作原理
 交换机:用于局域网内网的数据转发
 路由器:用于连接局域网和外网,也能进行数据转发
现在大部分路由器都有有交换机的功能;
但是交换机没有IP分配和IP寻址的功能,所以交换机没有路由器的功能。

6.网线

2. IP

1. 基本概念

  1. IP地址是Internet中主机的标识
  2. Internet中的主机要与别的机器通信必须具有一个IP地址
  3. IP地址为32位(IPv4 ,232)或者128位(IPv6,2128个)
    NAT:公网转私网、私网转公网
  4. IPV4表示形式:常用点分十进制形式,如202.38.64.10,最后都会转换为一个32位的无符号整数。

NAT设备(网络地址转换)
 功能:NAT设备的主要功能是将内部私有IP地址转换为公共IP地址,或反向操作,以便在局域网和外部网络(如互联网)之间进行通信。
 工作原理:
当局域网内的设备访问互联网时,NAT设备记录设备的内部IP地址和源端口,并用公共IP地址替换。
响应的流量也会经过NAT设备,NAT通过记录的映射关系将数据包发送回正确的内部设备。
 作用对象:NAT设备用于管理与外部网络(如互联网)的通信,通常作为路由器的一部分。

DHCP服务器(动态主机配置协议)
 功能:DHCP服务器的主要任务是自动分配IP地址、子网掩码、默认网关和DNS服务器ip等网络配置给网络中的设备(客户端),简化网络管理。
 工作原理:
当一个设备(如电脑或手机)首次连接到网络时,它会发送一个DHCP请求。
DHCP服务器接收到请求后,从预设的IP地址池中分配一个可用的IP地址,并返回给客户端。
 作用对象:DHCP服务器专注于局域网内部的IP地址管理。

2. 网络号/主机号(二级划分)

IP地址 = 网络号+主机号
网络号:表示是否在同一个网段内(局域网)
主机号:表示在网段内的ID,同一网段内不重复

3. IP地址分类

整体分类

在这里插入图片描述
 A类:(0.0.0.0 - 127.255.255.255)(默认子网掩码:255.0.0.0)
 第一个字节为网络号,后三个字节为主机号(一个字节占8位)。该类IP地址的最前面为“0”,因为网络号是8位,所以地址的网络号取值于 0~127之间(0000 0000)(0111 1111)。一般用于大型网络,主机号取值在0 - 2 ^24之间。

 B类:(128.0.0.0 - 191.255.255.255)(默认子网掩码:255.255.0.0)
 前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为“10”,所以地址的网络号取值于128~191之间。一般用于中等规模网络。

 C类:(192.0.0.0 - 223.255.255.255)(子网掩码:255.255.255.0)
 前三个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为“110”,所以地址的网络号取值于192~223之间。一般用于小型网络(一般教室使用的是C类)。

 D类:(224.0.0.0 - 239.255.255.255),多播地址。
 该类IP地址的最前面为“1110”,所以地址的范围取值于224~239之间。一般用于组播用户,组播通信。

 E类:是保留地址。该类IP地址的最前面为“1111”,所以地址的取值于240~247之间。一般是一些保密单位用得到,平时基本不会用到

特殊地址

0.0.0.0
 在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。
127.0.0.1
 回环地址/环路地址,所有发往该类地址的数据包都应该被loop back。
网络地址
 每一个网段主机号为0的地址; 如:192.168.50.0。它是网络中的一个特殊地址,不能被分配给任何具体的主机。
广播地址
 主机号最大的地址是该网段的广播地址 如:192.168.50.255。如: b类IP 广播地址为: 130.223.255.255
全网广播地址 : 255.255.255.255, 该地址不能随便用,会影响这个网络

A类:1.0.0.1~126.255.255.254
B类:128.0.0.1~191.255.255.254
C类:192.0.0.1~223.255.255.254
D类(组播地址):224.0.0.1~~239.255.255.254

4.子网掩码(MASK)

  1. 子网掩码:是一个32位的整数,作用是将某一个IP划分成网络地址和主机地址;
  2. 子网掩码长度是和IP地址长度完全一样;
  3. 网络号全为1,主机号全为0;
  4. 公式:网络地址 = IP & MASK
    主机地址 = IP& ~MASK

5. 练习

练习一:B类地址的子网掩码怎么写?
:255.255.0.0
练习二:B类地址,同一网段最多可以连接多少个主机?
:216 - 2 ;
 网络地址和广播地址(.1一般是路由器登陆界面)
练习三:已知一个子网掩码号为255.255.255.192,问:最多可以连接多少台主机?
:26 - 2;
 子网掩码:网络号全为1,主机号全为0;192 : 1100 0000;主机号只有6位;主机数为26-2台
练习四:一个IP地址为192.168.3.183,计算其网络号与主机号
 网络号:192.168.3.0
 主机号:0.0.0.183
练习五: 如果有800台电脑, 在不浪费ip情况下, 选用哪个网段?
:B类;C类同一网段只有28个,A类在同一网段会有224个主机

6. 三级划分

作用:重新划分网络号和主机号, 也就是重新组网 , 从而提高资源利用率
二级划分 IP :IP地址= 网络号 + 主机号
三级划分 IP :IP地址= 网络号 + 子网号 + 主机号
练习一:某公司有四个部门:行政、研发1、研发2、营销,每个部门各50台计算机接入公司局域网,如果要在192.168.1.0网段为每个部门划分子网,子网掩码应该怎么设置,每个子网的地址范围分别是什么?(4个部门之间不能通信)
:C类(254台主机)主机号:0000 0000
 行政:0000 0000 - 0011 1111=》
 研发1:0100 0000 - 0111 1111=》
 研发2:1000 0000 - 1011 1111=》
 营销:1100 0000 - 1111 1111=》
 子网掩码:255.255.255.1100 0000 =》255.255.255.192
练习二:有两台电脑主机,在最少浪费IP地址的情况下.将172.16.14.4与172.16.13.2划归为同一网段,则子网掩码应该设置为?
:255.255.252.0
解析

  1. 同一网段内主机号不同,网络号相同
  2. 从二级划分中主机号中划分出相同部分作为子网号,子网号与网络号合称网络号

 14.4:172.16.0000 1110.0000 0100
 13.2:172.16.0000 1101.0000 0010
 子网号:172.16.0000 11
 主机号:10.0000 0100 和 01.0000 0010
 子网掩码:255.255.1111 1100.0000 0000==》255.255.252.0

3. 网络模型

网络的体系结构

 网络采用分而治之的方法设计,将网络的功能划分为不同的模块,以分层的形式有机组合在一起。
 每层实现不同的功能,其内部实现方法对外部其他层次来说是透明的。每层向上层提供服务,同时使用下层提供的服务
网络体系结构即指网络的层次结构和每层所使用协议的集合
 两类非常重要的体系结构:OSI与TCP/IP

OSI模型

OSI模型

TCP/IP

在这里插入图片描述
应用层应用协议和应用程序的集合
传输层决定数据交给机器的哪个任务(进程)去处理,通过端口寻址
进程一定有进程号,不一定有端口号,端口号只有在进行网络通信才有

网络层提供设备到设备的传输,可以理解为通过IP寻址机器。
网络接口和物理层屏蔽硬件差异(驱动),向上层提供统一的操作接口。

OSI和TCP/IP的对应关系

在这里插入图片描述

常见协议

网络接口和物理层:
 ppp:拨号协议(老式电话线上网方式)
 Ethernet:是一种常见的局域网技术,使用MAC地址进行帧的传输和接收
 Wi-Fi:用于无线局域网的数据传输,通常基于IEEE 802.11标准
网络层:
 IP(IPV4/IPV6):网间互连的协议
 ICMP:网络控制管理协议,ping命令使用
 IGMP:网络分组管理协议,广播和组播使用
 ARP:地址解析协议 IP–>MAC
 RARP:反向地址转换协议 MAC–>IP
  (ARP;RARP在网络接口和物理层工作)
传输层:
 TCP:传输控制协议
 UDP:用户数据报协议
应用层:
 SSH:加密协议
 telnet:远程登录协议
 FTP:文件传输协议
 HTTP:超文本传输协议
 DNS:域名解析协议 (将人类易于记忆的域名(如www.baidu.com)转换为计算机使用的IP地址(如192.0.2.1))
 SMTP/POP3:邮件传输协议

DNS

 由于使用IP地址来指定计算机不方便人们记忆,且输入时候容易出错,用字符标识网络中计算机名称方法。
 域名(Domian Name )
 域名服务器(Domain Name server):用来处理IP地址和域名之间的转换。
 域名系统(Domain Name System,DNS):域名翻译成IP地址的软件DNS
域名结构
 例如域名 www.baidu.com.cn 从右向左看
 cn为高级域名,也叫一级域名,它通常分配给主干节点,取值为国家名,cn代表中国
 com为网络名,属于二级域名,它通常表示组织或部门
中国互联网二级域名共40个,edu表示教育部门,com表示商业部门,gov表示政府,mil军队等等
 baidu为机构名,在此为三级域名,表示百度
 www:万维网world wide web,也叫环球信息网,是一种特殊的信息结构框架。
工作流程
在这里插入图片描述

网络调试命令

ping

测试网络连通性(ICMP)
作为平时网络连通检测使用最多的命令,它的作用主要为:
● 用来检测网络的连通情况和分析网络速度;
● 根据域名得到服务器IP;
● 根据ping返回的TTL值来判断对方所使用的操作系统及数据包经过路由器数量。
在这里插入图片描述
字节:数据包大小
时间:响应时间:时间越小证明链接地址的速度越快
TTL:time to live:从源到目的,每经过一个路由器,TTL减一。当TTL = 0 时,数据包丢失

netstat

netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP相关的统计数据,一般用于检验本机各端口的网络连接情况。

netstat -a //查看所有网络状态
netstat -at //查看tcp所有网络状态
netstat -au //查看udp所有网络状态
netstat -l //查看处于监听状态的链接
netstat -lt //查看处于监听状态的链接tcp
netstat -lu //查看处于监听状态的链接udp
netstat -lx //查看处于监听状态的链接unix

ifconfig

查看网络接口信息
在这里插入图片描述
ens33:网卡名称 en:Ethernet s:表示热插拔槽上的设备 33:插槽编号
lo:回环网卡

格式含义
ifconfig 具体网卡名称只显示具体网卡的详细信息(无论是否启用)
ifconfig -a表示显示所有网卡包括没有启动的网卡
ifconfig 网卡名称up/down 表示开启或关闭网卡
ifconfig 网络接口 IP地址[/子网掩码长度]新建临时IP地址(添加 一块虚拟网卡)
ifconfig -s查看通讯情况

手机调试工具

全能调试
在这里插入图片描述

4. socket

1. socket 发展

  1. 1982 - Berkeley Software Distributions 操作系统引入了socket作为本地进程之间通信的接口
  2. 1986 - Berkeley 扩展了socket 接口,使之支持UNIX 下的TCP/IP 通信
  3. 现在很多应用 (FTP, Telnet) 都依赖这一接口

2. socket 介绍

  1. 是一个编程接口,函数
  2. 是一种特殊的文件描述符 (everything in Unix is a file)
  3. socket是一种通信机制,并不仅限于TCP/IP协议
  4. 面向连接 (Transmission Control Protocol - TCP/IP)
  5. 无连接 (User Datagram Protocol -UDP 和 Inter-network Packet Exchange - IPX)

3. 为什么需要socket?

  1. 普通的I/O操作过程 :打开文件->读/写操作->关闭文件
  2. TCP/IP协议被集成到操作系统的内核中,引入了新型的“I/O”操作:
    进行网络通信的两个进程在不同的机器上,如何连接?
    网络协议具有多样性,如何进行统一的操作?
    需要一种通用的网络编程接口:Socket

4.socket类型

流式套接字(SOCK_STREAM) —> TCP
提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收。 内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流。
数据报套接字(SOCK_DGRAM) --> UDP
提供无连接服务。 数据包以独立数据包的形式被发送,不提供无差错保证,数据可能丢失或重复,顺序发送可能乱序接收。
原始套接字(SOCK_RAW)
 可以对较低层次协议如IP、ICMP直接访问,还有一些ping命令

5. 位置

在这里插入图片描述

6. TCP/UDP

相同点:都存在于传输层,全双工通信

TCP:全双工通信、面向连接、可靠
 TCP(即传输控制协议):是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)。
高可靠原因
 1. 三次握手、四次挥手
 2. 序列号和应答机制
 3. 超时,错误重传机制
 4. 拥塞控制、流量控制(滑动窗口)

适用场景
 适合于对传输质量要求较高的通信
 在需要可靠数据传输的场合,通常使用TCP协议
 MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议

UDP:全双工通信、面向无连接、不可靠
 UDP(User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
适用场景
 发送小尺寸数据(如对DNS服务器进行IP地址查询时)
 适合于广播/组播式通信中。
 MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议

5. 端口号 port

 为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区分
 TCP端口号与UDP端口号独立(UDP port为8888,TCP port也可为8888 )
 端口号一般由IANA (Internet Assigned Numbers Authority) 管理
 端口用两个字节来表示

众所周知端口(被占用:1 - 1023(1 - 255之间为众所周知端口,256 - 1023端口通常由UNIX系统占用))
已登记端口:1024 - 49151(可用来建立与其它主机的会话)
动态或私有端口:49152 - 65535 固定某些服务使用

6. 字节序

字节序: 不同类型的cpu主机,内存存储大于一个字节类型的数据在内存中的存放顺序。
小端序(little-endian)= 低序字节存储在低地址 = 主机字节序
大端序(big-endian)= 高序字节存储在低地址 = 网络字节序
网络中传输的数据必须使用网络字节序,即大端字节序
终端显示的数据必须是主机字节序,即小端字节序
 网络传输中,需要将每个主机的主机字节序(CPU决定),转换为网络中统一顺序的网络字节序,才能供双方主机去识别。
 只需要转换IP和port就可以,不需要转换传输的数据包的字节序,因为IP和port为 4个字节和2个字节, 而数据报一般都为char类型, 占一个字节,根据字节序的性质,内存存储大于一个字节类型的数据在内存中的存放顺序,所以char类型并不具有字节序的概念。
练习:写一个程序,判断当前主机的字节序?

union en
{
    int in;
    char ch;
};
int main()
{
    int myend = 0x12345678;
    // 指针
    char *endp = (char *)&myend;
    printf("%#x\n", *endp);
    // 数据类型
    char endch = (char)myend;
    printf("%#x\n", endch);
    // 共用体
    union en endun;
    endun.in = myend;
    endun.ch = (char)endun.in;
    printf("%#x", endun.ch);
}

int 类型的myend占满四个字节,强转成char类型的数据时会按照主机的大小端类型存储。如果强转之后打印出来的是“78”,说明低位字节存储在低地址位,是小端存储;如果强转之后打印出来的是“12”,说明高位字节存储在低地址位,是大端存储。


http://www.kler.cn/a/570880.html

相关文章:

  • 动手学深度学习:多层感知机
  • 完全背包变体-排列和组合的循环顺序问题
  • 【硬核拆解】DeepSeek开源周五连击:中国AI底层技术的“破壁之战”
  • Java学习——day13
  • Unity插件-Mirror使用方法(三)组件介绍(Network Manager)
  • JavaScript 私有属性的实现方式及对比
  • 文本处理Bert面试内容整理-BERT的基本原理是什么?
  • 【论文分析】语义驱动+迁移强化学习:无人机自主视觉导航的高效解决方案(语义驱动的无人机自主视觉导航)
  • 基于 Rust 与 GBT32960 规范构建高并发、高可用、高扩展服务端程序
  • EGO-Planner的无人机视觉选择(yolov5和yolov8)
  • 记录遇到的面试题
  • FPGA开发,使用Deepseek V3还是R1(1):应用场景
  • android 系统 wms详解
  • HONOR荣耀MagicBook 15 2021款 独显(BOD-WXX9,BDR-WFH9HN)原厂Win10系统
  • 为什么深度学习选择Tensor而非NumPy数组?核心优势深度解析
  • 8295智能座舱弹窗点击问题,点击window之外的区域,window不消失的问题。touchableRegion的问题分析(android 13)
  • DNS 详细过程 与 ICMP
  • aiohttp、httpx 和 requests 的区别
  • 五分钟快速学习优秀网站的HTML骨架布局设计
  • 比亚迪“灵鸢”来袭,汽车+无人机梦幻联动!