网络编程基础
-
软件开发架构
-
-
c/s架构(client/server): 需要网络编程的知识
-
-
c:客户端(体验服务的那一方,随时可以去体验服务)
s:服务端(提供服务的那一方,24h不间断的提供服务)
-
-
-
b/s架构(browser/server):需要并发,数据库,前端和Django的知识
-
-
b:浏览器
s:服务端
ps:b/s架构本质上也是c/s架构
-
远程通信协议
-
人想要实现无障碍的交流,必须使用统一的语言,那么计算机与计算机之间先要实现相互通信和数据传输,那也必须要使用统一的“语言”(也就是所说的协议/标准)
-
OSI七层协议
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理连接层
-
OSI五层协议
- 应用层
- 传输层
- 网络层
- 数据链路层
- 物理连接层
在这里是把表示层和会话层删除了,是因为它们属于应用层的一部分
-
-
物理连接层
-
基于电信号传输的0101010101010010的二进制数据
-
-
数据链路层
-
1. 规定了电信号的分组方式,也就是说电信号的二进制数据该按照哪个方法来去编译成字符
2. 规定了任何一台接入互联网的计算机都必须有一块网卡
每一块网卡上面都刻有世界上独一无二的编号,是由12位16进制数组成的
前六位是厂商编号,后六位是流水线编号
这12位数又叫做mac地址
以上两点被称作‘以太网协议’
想要实现多个计算机之间的相互通信,在计算机加多个网卡接口是不太现实的,因此人们创造出了交换机这个机器来实现多个计算机基于以太网通信
大概的原理是:某个计算机发送与其中一个计算机进行通讯的需求,然后这个需求传给交换机,随之交换机会将这个需求传给所有的计算机,发现匹配的计算机后,目标计算机则会发送单波给交换机,再由交换机传输给终端,实现计算机之间的通讯。
-
-
网络层
-
IP地址规定了只要是连入互联网的计算机都必须有一个IP地址
ip地址的特点:点分十进制
最小的ip地址是:0.0.0.0
最大的ip地址是:255.255.255.255
ip地址目前已经有两个版本:一个是ipv4,一个是ipv6,由于世界上计算机数量的大量增多,ipv4的地址数量不够用,所以现在ipv6的地址版本逐渐进入使用
IP地址是动态分配的
-
-
传输层
-
TCP/UDP都是基于端口工作的协议
端口(port)
计算机与计算机之间的通讯其实是计算机上的应用程序与另一个计算机应用程序之间的通信
端口的意义在于标识一台计算机上的某个应用程序
端口号的范围:0-65535
注意:0-1024这些都是操作系统默认的端口号
MySQL默认端口:3306
Redis默认端口:6379
Django默认端口:8000
flask默认端口:5000
综上:ip地址是用来标识接入互联网的某一个计算机,port端口是用来标识一台计算机上的某一个应用程序,那么ip+port就是来确定接入互联网的哪一台电脑的哪一个应用程序。
-
-
应用层
-
HTTP协议
FHP协议
-
TCP协议之通信方式
-
TCP协议属于流式协议以及可靠协议,基于TCP协议的通信,必须建立双向通道,但是TCP之所以可靠并不是因为它有双向通道,而是它的数据反馈机制。
-
三次握手四次挥手