python:初始网络编程

 网络编程:

  软件:

    客户端: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协议:速度快,不安全,不可靠,不面向连接,面向数据包形式的传输

原文地址:https://www.cnblogs.com/while-number/p/9339786.html