网路编程简介:django
什么是网络编程:编程
网络一般指的是计算机中的互联网,是由多台计算机经过网线或其余媒介相互链接组成的,flask
编写基于网络的应用程序的过程称之为网络编程浏览器
那么为何要学习网络编程:服务器
咱们已经知道计算机,由操做系统,应用程序组成,有了这三个元素,就能够在本身的电脑上运行一些应用程序了,好比玩玩纸牌,扫扫雷什么的,只能玩单机的游戏微信
若是想要与其余计算机一块儿玩,就必需要让你的计算机和其余计算机可以互相传递数据网络
学习网络编程就是要学习利用网络来与另外一台计算机相互传输数据,开发出支持网络通信的应用程序,这样就能够足不出户也能够知天下事架构
软件开发架构:tcp
C/S架构:学习
学习网络编程就是要经过网络来访问另外一台计算机的数据,这样必然须要至少俩台计算机,一台计算机上放着要分享的数据和用于分享的数据的程序,另外一台计算机上运行访问数据的程序,
咱们把提供数据的一方称之为服务器(server),把访问数据的一方称之为客户端(client)
这就是C/S架构
电脑上要看视频就须要装看视频的程序.例如腾讯视频,它就是客户端程序,腾讯公司的机房里运行着腾讯视频的服务器程序,因此它也是C/S构架的程序
另外浏览器也能够访问服务器上的网页数据,称之为B/S,其本质上也是C/S只不过客户端是浏览器
总结:
C/S架构(client/ server)
c:客户端
s:服务端
B/S结构(browser / server)
b:浏览器
s:服务器
注意:bs结构本质上也是cs结构
手机端看上去cs结构比较火,实际上bs已经崛起了,
微信支付宝都在作一件事:统一接口
服务端:24小时不间断提供服务
客户端:何时想体验服务,就去找心仪的服务端寻求服务
网络通信协议:
俩台计算机想要通信的话,必须具有俩个基本要素
1.物理链接介质,包括网线,无线电,光纤等
2.通信协议
1.物理链接介质
好比说电话机 要打通电话则必须先接通电话线,电流才能沿着电话线到达另外一台电话机,电话线则是物理介质
2.通信协议:
协议就是标准,你们都要遵循相同的标准才能正常交流通信
好比说俩我的要交流,必须说双方都能理解的语言,否则你说你的语言,我说个人语言,双方都听不懂,人要想实现无障碍交流必须说统一的语言 >>> 英文
**计算机与计算机之间要想实现远程通讯除了有物理链接介质以外还须要
有一套公共的标准/协议
OSI七层模型:
应用层
表示层
会话层
传输层
网络层
数据链路层
物理链接层
为了方便记住,而简化了一下,变为OSI五层模型
应用层
传输层
网络层
数据链路层
物理链接层
1.物理链接层:
基于电信号传输010101001的二进制数据
2.数据链路层
1.规定了电信号的分组方式
2.规定了任何一台接入互联网的计算机都必须有一块网卡,
每一块网卡上面都刻有世界上独一无二的编号
12位16进制数
前六位是厂商编号
后六位是流水线编号
咱们管这12位数叫作mac地址
注意:以上俩点合成为‘以太网协议’
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
django默认端口:8000
flask默认端口:5000
端口号是动态分配的,好比说第一次启动qq分配的是8989端口号,将qq关闭再次启动端口号可能就变了
总结:
ip地址:是用来惟一标识接入互联网的一台计算机
port端口:用来惟一标识一台计算机上的某个启动的应用程序
ip+port:惟一标识接入互联网一台计算机上的某个启动的引用程序
5.应用
http协议 ftp协议
数据传输传输层
TCP协议
流失协议,可靠协议
基于TCP协议通讯,必选先创建双向通道
为何说是可靠协议,由于tcp传输数据的可靠缘由在于他有反馈机制,
由于发送数据的一方必须等到接收方的响应,才会删除内存中的数据,
没有响应的话则不会删除,会每隔一段时间就发一次,一直等到有响应后才会删除内存中的数据
三次握手:
三次握手的过程实际上实在确认我发的你能收到,你发的我也能收到,从而保证数据传输的的可靠性,
连接是一个虚拟的概念,不实际存在,只要三次握手成功即表示链接创建成功!
TCP协议要求在发送数据后,必须接收到对方的回复信息才能确认数据成功发送,若是一段时内没有收到回复信息,会自动从新发送,若是重试的次数过多则表示连接可能已经中断!
四次挥手:
四次挥手的目的是保证双方的数据传输已经所有完成,一样是为了保证数据的完整性
四次挥手中间的俩步是不能合并的,由于服务端须要检测是否还有未发玩的数据
其优势很明显:可以保证数据传输是完整的
缺点:因为每次都须要传输确认信息,致使传输效率下降
场景:多用于必须保证数据完整性的场景,例如文本信息,支付信息等!