网络编程:
应用软件的构架
1.C/S
clien t==== server
客户端======》网络=====》服务端
2.B/S
browser ==== server
浏览器======》网络=====》服务端
server端应该遵循的原则:
1.无论是服务端还是客户端都应该有一个唯一的地址(ip+port),但是服务端ip+port必须固定/绑定
2.一直对外提供服务,稳定运行
3.服务端应该支持并发
网络:底层的物理连接介质+互联网协议(就相当于计算机界的英语)
在不同的计算机上 一个安装客户端 另一个安装服务端 通过网络来通讯
什么是网络通讯?
要完成通讯必须具备的条件:
1.物理连接介质(网线,wifi,光纤)
2.必须遵循相同的标准
在计算机网络中同样需要具备这两个条件
作为一个应用软件开发者 不需要关心第一步 重点关心的是通讯的标准(通讯的协议)
网络协议:
open system interconnection
OSI七层模型:应用层(表示层,会话层),传输层,网络层,数据链路层,物理层
应用层:http,ftp
传输层:TCP/UDP
网络层:ip
数据链路层:ethernet
物理层:发送电信号
传输层协议:TCP和UDP是传输层最常见的协议
主要控制传输数据的方式
TCP的传输方式:
特点:通过三次握手来与服务器建立连接
可以保证数据的完整性:
a机器给b机器发送数据包 要求b机器必须立即返回一个确认包
a机器会等待一段时间,如果超市还没有收到确认,则重发数据
缺点:传输效率低
使用场景:文字聊天,支付转账等
三次握手:TCP建立连接时发生的
第一次握手:客户端向服务端发送连接请求
第二次握手:服务端向客户端发送同意连接请求以及是否能正常接收信
息的测试信息
第三次握手:客户端向服务端发送可以正常接收的确认信息
四次挥手:TCP断开连接时发生的
第一次挥手:客户端向服务端发送断开连接请求
第二次挥手:服务端发送同意请求信息,但要求数据需传输完后才可以断开
第三次挥手:服务端发送数据发送完毕信息
第四次挥手:客户端确认数据接收完毕,断开连接
UDP的传输方式:不需要建立连接 直接发送
优点:传输效率比TCP高
缺点:不能保证数据的完整性
使用场景:视频通话,语音通话,游戏
学习网络编程 其实就是在学习socket?
socket是什么?
翻译过来就是套接字
是对底层的TCP IP UDP等网络协议进行封装
使得上层的应用程序开发者,不用直接接触这些复杂的协议
在程序员的言论中 他就是一个封装好的米快
要完成网络通讯 只需要使用系统提供的socket模块就行
python中的socket
在使用socket的时候用户需要关心的是IP地址,port端口 传输协议TCP/UDP,你要发送的数据data
在写网络编程的时候,必然是有两台代码 对应者客户端和服务端