Python 网络编程 OSI模型 TCP三次握手四次挥手
总结:OSI就是相当于计算机界的通用语言,只要按照osi的标准来通讯,就能够与全世界任何一台计算机通讯。
一 物理层
1.基于电信号传输0和1的二进制数据
二 数据链路层(以太网协议)
以太网协议:
1.规定了电信号的分组方式 2. 规定了任何一台互联网的计算机必须有一块网卡mac地址(12位16进制数:前6位厂商编号,后6位流水编号)
2.基于以太网协议:不能跨局域网通信,容易产生广播风暴
三 网络层(IP协议)
ip协议:
1.规定了只要是接入互联网的计算机都必须有一个ip地址
2.ip地址特点:点分十进制
3.IP地址的分类:
A类保留给政府机构
1.0.0.0---126.0.0.0
B类分配给中等规模公司
128.0.0.0---191.255.0.0
C类分配给任何需要的人
192.168.0.1 - 192.168.255.254
D类用于组播
E类用于实验
四 传输层(tcp udp)
1.tcp\udp都是基于端口工作的协议
2.计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通信
3.
端口:用来唯一标识一台计算机上的某个应用程序
# 端口号的范围:0~65535
# 注意:0~1024这些都是操作系统默认使用的端口号
# 建议:使用8000之后的端口
# MySQL默认端口:3306
# Redis默认端口:6379
# django默认端口:8000
# flask默认端口:5000
#
# 端口号是动态分配的
# 第一次起qq分配到的是8989
# 将qq关闭再次启动端口号可能就变了
# 5.总结
# ip地址:用来唯一标识接入互联网的一台计算机
# port端口:用来唯一标识一台计算机上的某个应用程序
#
# ip+port:唯一标识接入互联网一台计算机上的某个应用程序
四 应用层(HTTP FTP)
TCP(传输控制协议)
1.也称流式协议和可靠协议,基于TCP协议通信,必须先建立双向通信
2.
#1.三次握手建立链接 其目的是为了确认传输路径可用
#2.传输过程中 每一个数据包都需要 确认信息
# 3.四次挥手断开链接 是为了保障双方数据都已经传输完毕
3.TCP传输数据可靠是因为反馈机制(不是因为双向通道):客服端向服务端发送一条数据后内存中的数据不会删除,会等到服务端发送确认收到数据的信息才会删除,如果服务端没有发送客户端会每隔一段时间再发送一次直到收到确认信息,等超过一定的时间还是没收到确认信息客户端会认为服务端挂掉了。
TCP三次握手建立连接
1.客户端向服务端发送 客户端与服务端建立通讯连接请求
2.服务端回应客户端的请求并发送服务端与客户端建立通讯连接的请求(此时客户端与服务端建立通讯连接成功)
3.客户端回应请求(此时服务端与客户端建立通讯连接成功)
TCP四次挥手断开连接(发起方可为任一方,此以客户端为例)
1.客户端向服务端发送 客户端与服务端断开通讯连接请求
2.服务端回应客户端的请求(此时客户端与服务端断开通讯连接)
3.服务端把剩余数据发送完毕后,向客户端发送断开连接请求
4.客户端回复服务端请求(此时服务端与客户端断开连接)
补充:洪水攻击:服务器在同一时间接收到大量访问请求,但请求放不回复响应