11.网络编程的基础知识
- **1. OSI模型与TCP/IP模型**
- **2. IP地址分类**
- **3. Socket编程**
- **4. TCP三次握手与四次挥手**
- **5. 常用网络测试工具**
- **6. 练习与作业**
- **7. 总结**
1. OSI模型与TCP/IP模型
-
OSI模型(开放系统互联模型):
-
7层结构:
-
应用层:为网络用户提供各种服务(如HTTP、FTP)。
-
表示层:数据加密解密、压缩解压缩。
-
会话层:管理进程会话过程(如连接状态)。
-
传输层:提供可靠或不可靠的传输服务(如TCP、UDP)。
-
网络层:负责数据传输的路由选择和网际互连(如IP)。
-
数据链路层:负责物理相邻主机间的数据传输(如MAC地址)。
-
物理层:负责将数据转换成电信号并通过网络介质传输。
-
TCP/IP模型(网际互联模型):
-
4层结构:
-
应用层:应用程序(如HTTP、FTP)。
-
传输层:端口号(如TCP、UDP)。
-
网络层:IP地址(如IP、ICMP)。
-
接口层:网卡、驱动(如ARP、RARP)。
2. IP地址分类
-
IP地址:由网络位和主机位组成。
-
分类:
-
A类:1.0.0.0 - 126.255.255.255,用于超大规模网络。
-
B类:128.0.0.0 - 191.255.255.255,用于大中规模网络。
-
C类:192.0.0.0 - 223.255.255.255,用于中小规模网络。
-
D类:224.0.0.0 - 239.255.255.255,用于组播和广播。
-
E类:240.0.0.0 - 255.255.255.255,用于实验。
3. Socket编程
-
Socket:用于网络通信的一组接口函数。
-
TCP编程流程:
-
服务器端:
-
创建Socket:
socket()
。
-
绑定地址:
bind()
。
-
监听连接:
listen()
。
-
接受连接:
accept()
。
-
接收数据:
recv()
。
-
关闭连接:
close()
。
-
客户端:
-
创建Socket:
socket()
。
-
连接服务器:
connect()
。
-
发送数据:
send()
。
-
关闭连接:
close()
。
4. TCP三次握手与四次挥手
-
三次握手:
- 客户端发送
SYN
到服务器。
- 服务器回复
SYN-ACK
。
- 客户端发送
ACK
。
-
四次挥手:
- 客户端发送
FIN
到服务器。
- 服务器回复
ACK
。
- 服务器发送
FIN
到客户端。
- 客户端回复
ACK
。
5. 常用网络测试工具
-
telnet:远程登录工具。
-
netstat:查看网络端口使用情况。
-
ping:测试网络连通性。
-
arp:地址解析命令。
-
wireshark:抓包工具。
- 过滤规则:
ip.src == x.x.x.x
、tcp.port == xx
。
-
tcpdump:命令行抓包工具。
6. 练习与作业
-
练习1:编写TCP服务器和客户端程序,实现简单的字符串传输。
-
练习2:使用
wireshark
抓包验证TCP三次握手和四次挥手。
-
作业1:优化聊天程序,支持实时双向通信。
-
作业2:设计通用的客户端和服务器测试工具。
-
作业3:实现客户端向服务器发送结构体数据、文件内容等功能。
7. 总结
-
OSI模型和TCP/IP模型是网络通信的基础框架。
-
IP地址分类决定了网络的规模和用途。
-
Socket编程是实现网络通信的核心技术。
-
TCP三次握手与四次挥手确保了连接的可靠性和有序性。
-
网络测试工具(如
telnet
、netstat
、wireshark
)是调试和排查网络问题的重要工具。