文章目录
1 计算机网络的层次结构
1.1 TCP/IP四层模型
1.2 以太网协议详解
1.2.1 MAC地址
1.2.2 以太网协议
2 网络层
2.1 网络层IP协议相关
2.2 ARP & RARP
2.3 IP地址的子网划分
子网划分
无分类编址CIDR
2.4 网络地址转換NAT技术
解决IP地址不够用的问题
2.5 ICMP协议详解
2.6 Dijkstra(迪杰斯特拉)算法
2.7 rip & ospf
3 传输层
用户编程的最底层
传输的最高层
3.1 传输层简介
3.2 进程与进程之间的通信***
3.3 UDP协议详解
3.4 TCP协议详解
3.4.1 TCP概述
3.4.2 可靠传输的基本原理
3.4.3 TCP协议的可靠传输
3.4.4 TCP协议的流量控制
3.4.5 TCP协议的拥塞控制
3.4.6 TCP连接的建立(三次握手)
3.4.7 TCP连接的释放(四次挥手)
3.4.8 套接字与套接字编程***
IP:Port
【1】 server
# -*- encoding=utf-8 -*-
import socket
def server():
# [1] 创建套接字 socket
s = socket.socket()
host = "127.0.0.1"
port = 6666
# [2] 连接socket
s.bind((host, port))
# [3] 监听
s.listen(5)
while True:
c, addr = s.accept()
print('Connect Addr : ', addr)
c.send(b'Welcome to my server')
c.close()
if __name__ == '__main__':
server()
【2】 client
# -*- encoding=utf-8 -*-
import socket
def client(i):
# [1] 创建套接字 socket
s = socket.socket()
host = "127.0.0.1"
port = 6666
# [2] 连接socket
s.connect((host, port))
print(f'Recv msg : {s.recv(1024)} ID : {i}')
s.close()
if __name__ == '__main__':
for i in range(10):
client(i)
4 应用层
4.1 概述
4.2 DNS详解
4.3 DHCP协议详解
4.4 HTTP协议详解
4.5 HTTP工作的结构
4.6 HTTPS协议详解
5 实践
5.1 搭建服务基本框架
5.2 python操作字节序列
# -*- encoding=utf-8 -*-
import struct
# 八个字节
bin_str = b'ABCD1234'
print(bin_str)
result = struct.unpack('>BBBBBBBB', bin_str)
print(result)
result = struct.unpack('>HHHH', bin_str)
print(result)
result = struct.unpack('>LL', bin_str)
print(result)
result = struct.unpack('>8s', bin_str)
print(result)
result = struct.unpack('>BBHL', bin_str)
print(result)
5.3 实现IP报文解析器