总结二十三
网络编程
软件开发架构
c/s架构(client/server)
c:客户端
s:服务器
b/s架构(browser/server)
b:浏览器
s:服务器
ps:bs架构本质也是cs架构
服务端:24小时不间断提供服务
客户端:什么时候想体验服务,就去找服务端请求服务
网络编程的发展史
任何先进的技术最早都来源于军事
回到过去
1.早起的电话 电话线
2.大屁股电脑 网线
3.笔记本电脑 无线电话 网卡
要想实现远程通信第一个需要具备的条件是:物理连接介质
人要想实现无障碍交流必须说统一的语言——英语
计算机与计算机之间想要实现远程通信除了有物理连接介质之外还需要欧一套公共的标准/协议
OSI协议
OSI七层协议
应用层
表示层
会话层
传输层
网络层
数据链路层
物理连接层
OSI五层协议
应用层
传输层
网络层
数据链路层
物理连接层
1.物理连接层
基于电信号传输0101010二进制数据
2.数据链路层
1.规定的电信号的分组方式
2.规定了任何一台介入互联网的计算机都必须有一块网卡
没一块网卡上面都刻有世界上独一无二的编号
12位16进制数
前6位是厂商编号
后6位是流水线编号
这12位数就是mac地址
ps:以上两点合称为“以太网协议”
交换机
基于以太网协议通信,不能跨局域网通信
互联网是由N个局域网彼此之间连接而成的
3.网络层
IP协议,规定了只要接入互联网的计算机都必须有一个IP地址
IP地址特点:点分十进制
IP地址最小:0.0.0.0
IP地址最大:255.255.255.255
IP地址目前有两个版本:IPV4 IPV6(由于IPV4已经不够表示目前存在的计算机了,所以推出了IPV6版本)
IP地址是动态匹配的
4.传输层
TCP/UDP都是基于端口工作的协议
端口(port)
计算机与计算机之间其实是计算机上的应用程序与应用程序之间的通信
端口:用来唯一表示一台计算机上的某个应用程序
端口号的范围:0~65535
注意:0~1024这些都是操作系统默认使用的端口号
建议:使用8000之后的端口
MySQL默认端口:3306
Redis默认端口:6379
diango默认端口:8000
flask默认端口:5000
端口号是动态分配的
第一次启动qq分配到的是8989
将qq关闭再次启动端口号可能就变了
总结:
IP地址:用来唯一标识接入互联网的一台计算机
port端口:用来唯一表示一台计算机上的某个应用程序
IP+port:唯一表示接入互联网的一台计算机上的某个应用程序
5.应用层
HTTP协议
FTP协议
TCP协议
流式协议,可靠协议
基于TCP协议通信,必须先建立双向通道
问题:TCP协议传输数据之所以可靠的原因就在于有双向通道???
答:错
三次握手四次挥手
三次握手:
四次挥手:
原文地址:https://www.cnblogs.com/TZZ1995/p/11311623.html
- 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 数组属性和方法
- Nginx共享内存剖析及开源项目分享
- ceph object_cacher源码分析
- 太实用了!自己动手写软件——我们的密码破解器终于完成了
- RabbitMQ 快速入门实战
- 在终端打印地图
- Loki漫谈
- 聊聊dubbo-go的TokenFilter
- 面试 | 卡掉不少人的一道腾讯算法面试题,高手来试试?
- 面试 | 百度测试开发岗位面试题目回顾
- ESP8266简单介绍
- 基于MTCNN和MobileFaceNet实现的人脸识别
- 学习 | egg.js 从入门到精通
- 形式化分析工具AVISPA(三)学习User micro-manual of AVISPA
- 形式化分析工具AVISPA(三)2.学习User micro-manual of AVISPA
- s6中class的一些基础知识和es5语法的对比