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.客户端回复服务端请求(此时服务端与客户端断开连接)
补充:洪水攻击:服务器在同一时间接收到大量访问请求,但请求放不回复响应
原文地址:https://www.cnblogs.com/tfzz/p/11311717.html
- 腾讯云GAME-TECH沙龙干货回顾:网龙《英魂之刃口袋版》开发经验分享
- ASP.NET MVC基于标注特性的Model验证:一个Model,多种验证规则
- 【深度学习系列】用PaddlePaddle和Tensorflow实现经典CNN网络AlexNet
- 黄荣奎:如何快速、便捷开发小程序
- 熊普江: BGP网络架构助力开发者快速构建、优化业务
- 唐良:云端架构给电商行业带来创新力
- 邹方明:看腾讯云如何架构海量存储系统
- 王之捷:AI智能云端架构大幅提升智能语音识别能力
- 精彩大放送 | 腾讯云:容器架构向无服务架构的演进
- Python 数据分析学习笔记
- 如何用Fiddler抓取https
- 人工智能与大数据结合,帮助降低自杀率
- “多态”的数据库连接池实现
- ASP.NET MVC基于标注特性的Model验证:DataAnnotationsModelValidatorProvider
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Flink 批处理算子详解
- Flink 流计算算子函数详解
- TensorFlow-手写数字识别(三)
- 常用字节转换(字符串转16进制,16进制转字符串)
- TensorFlow-手写数字识别(二)
- TensorFlow-手写数字识别(一)
- OpenCV-简易答题卡识别
- Flink 原理详解
- FreeRTOS例程2-任务挂起恢复与使用中断遇到的坑!
- Puppeteer自动化的性能优化与执行速度提升
- PyTorch1: 张量的性质
- 分治算法
- 基于 Nginx + PHP-FPM 作为 HTTP 服务器
- 玩转 PhpStorm 系列(五):代码模板篇
- 通过 PDO 扩展与 MySQL 数据库交互(上)