网络编程预备知识
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
),就会重新发送之前发送的数据报文,以确保数据能够可靠地到达接收方 -
"面向连接": 意味着在正式通信之前发送,方和接收方需要先建立一条虚拟的连接通道(使用三次握手),通信结束后再拆除这条连接(使用四次挥手)
-
-
UDP
:User Datagram Protocol
用户数据报协议 -
它是不可靠的无连接协议。
- 在数据发送之前,因为不需要进行连接就可以直接发送数
-
"实时应用"
-
-
-
-
网络层
-
IP
:IP地址
(网卡的逻辑上的编号)ICMP
IGMP
-
设备驱动与硬件层
- 硬件:
- 网卡
- 网线
MAC 协议
:- MAC地址(网卡的物理地址
48bits
)
- MAC地址(网卡的物理地址
- 硬件:
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
位为一组,中间用.进行分割- 比如:
- 每8
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
C10000000 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
位就是主机号cnetmask : 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
)+端口号进行确定。
端口号由IANA
(internet Assigned Number Authority
)管理
比较出名端口:1~1023
ftp
:21
http
:80
- 注册端口:
1024~49151
- 动态和私有端口:
49152~6553