网络编程:
软件:
客户端:cs架构 , client ==> server
浏览器:bs架构 , browser ==> server
如何实现互相通信.
需求一:编写两个软件,软件之间相互通信
需求二:两个人直接连接(网线)
需求三:家是相互通信(交换机)
使用IP地址:ipconfig/ ios系统ifconfig
例如:192.168.12.5
如果你想要连三亚的女朋友需要用公网IP
需求四:和三亚的女友通信(交换机+n*路由器)
总结:
1,相互通信本质发送 010100011001
2,交换机的作用
3,通过ipconfig查看自己的内网IP
4,公网IP,花钱买
基于socket模块实现网络通信
为什么要网络通信发送的是字节?而不是字符串
py3:send/recv都是字节
py2:send/recv都是字符串
多台电脑通信;交换机+路由器
mac地址:物理地址,全球唯一 相当于 身份证号
IP地址 :虚拟地址,四位点分十进制 相当于学号
*如何判断两台主机是否在同一个局域网?
ip地址 & 子网掩码 = 网段
*arp协议:通过目标ip地址,获取目标mac地址
端口:操作系统给与,通过端口号可以确定某一个应用程序
*ip+端口:唯一确定某一个主机上的耨一个应用程序
(基础)回环地址:127.0.0.1
osi五层模型:
应用层: PY文件,应用
传输层: tcp/udp协议
网络层: ip协议
数据链路层: arp协议,网卡
物理层: 网线,集线器,光纤
*tcp协议:安全可靠面向连接,面向数据流形式的传输
三次握手:
首先必须现有客户端发起连接的请求,
接下来,服务器接收到请求之后,回复给客户端两个表示,一个syn表示
服务器接收到请求,一个ack表示服务器再做准备工作,变革便是一起回复给客户端
最后客户端接收到服务器的回复,客户端准备连接的所有资源,开始进行连接发送给服
务器一个ack表示客户端的连接准备工作已经完成
(此时表示客户端和服务器可以相互连接了)
那句代码体现了三次握手:服务器端的accept,客户端connect
四次挥手:
(1)首先由连接双方任意一方发起断开连接的请求,发起方发送的请求表示,
我没有数据要继续发送了,可以断开连接了,但是你如果还有数据
可以继续向我发送数据
(2)接收方回复给发起方,表示接到了发起方的断开请求,开始着手准备断开事宜
(3)接收方准备完成后,给发起方发送一个标识,标识接收方没有数据继续发送了,
可以断开连接了
(4)发起方接收到消息,准备断开连接.回收资源!
那句代码体现了四次握手:close()
*udp协议:速度快,不安全,不可靠,不面向连接,面向数据包形式的传输