zoukankan      html  css  js  c++  java
  • 网络编程,tcp/udp

    架构  --  程序员开发的一种模式
       C/S架构   客户端/服务器模式
      
       B/S架构   Browser浏览器 / 服务器模式
       B/S架构的优势: 统一了应用的接口
      
       网络通信编程:
         同一台电脑上两个py文件通信   ---   文件
        
      两台电脑  如何通信?          ---   一根网线
     
      多台电脑  如何通信?          ---   交换机
     
      更多台电脑   如何通信?       ---   交换机+路由器
      

       mac地址: 物理地址
         在cmd 查看命令  ipconfig -all
      mac地址是12位十六进制组成

         ip地址: 是一个四位点分十进制组成(ipv4)
      端口:   操作系统为每一个应用程序分配一个端口号
      ip + 端口号 唯一确定某一个电脑上的某一个程序
     
      arp协议: 通过目标ip地址,获取目标mac地址

         给你一个ip地址,如何确定它是不是在你当前局域网内?
          ip地址    &     子网掩码
         ex:
         ip地址    192.168.1.12
              1100 0000 . 1010 1000 . 0000 0001 . 0000 1100
      
              1111 1111 . 1111 1111 . 1111 1111 . 0000 0000
        
         结果 1100 0000 . 1010 1000 . 0000 0001 . 0000 0000
           ---> 192.168.1.0 网段
        
      子网掩码  255.255.255.0
     
      用网段来确定一个ip地址是否在你当前的局域网内.
     
      网段 = ip地址    &     子网掩码
     
      路由器:
        有一个路由表,记录了归它管理的所有的网段
     
     
     
      协议 : 由多人制定的一种规则
     
     
      通过socket模块去操作tcp和udp协议
     
      TCP协议 : 安全可靠通信方式,面向连接
      UDP协议 : 不安全,不可靠的通信方式,快,
     
      ip地址:127.0.0.1 : 回环地址:无论什么时候,都可以代表本机的ip地址(只限在本机使用)
     
     
      tcp协议:
        三次握手 : 注意必须是client先发起请求
           1 client发送给server我想连接你,可以么
           2 server回复client,可以,我也想连接你,可以吗?
        3 client回复server,可以
       
       
        四次挥手 : 谁先发起请求都可以
           1 client发送请求:我准备断开连接了,我没有数据需要发送了,
             如果你有数据可以继续发给我
           2 server回复:确认接收到你的请求,我开始着手准备断开事宜
        3 server回复:我准备好了,可以随时断开连接
        4 client回复:断开连接吧
        
     
      OSI五层模型:
         应用层       py文件
      传输层       tcp/udp协议
      网络层       ip协议
      数据链路层   arp协议,网卡
      物理层       网线,集线器,光纤

    写一个小型聊天程序,1v1(基础版本):

    server#

    import socket

    sk=socket.socket(type=socket.SOCK_STREAM)
    sk.bind(('127.0.0.1',2000))

    sk.listen( )

    conn,addr=sk.accept()

    while True:

      ret=conn.recv(1024)

      print(ret)

      conn.send('hello')

    conn.close()

    sk.close()

    client客户端#

    import socket

    sk=socket.socket()

    sk.connect(('127.0.0.1',2000))

    while True:

      sk.send('hellobaby')

      ret=sk.recv(1024)

      print(ret.encode())

    sk.close()

    总结:

    arp协议:通过目标的IP地址,获取目标的mac地址

    tcp:安全可靠的,面向连接

    udp:不安全不可靠  速度快

    协议:经过多方制定的一种规则

  • 相关阅读:
    SQL Server中行列转换 Pivot UnPivot
    div层拖动
    INamingContainer 接口
    nhibernet并发出错
    百度空间的密码帐号
    委托与事件入门经典
    Left Join、Right Join、Inner Join的区别
    C#操作剪贴板
    hibernate源码分析 持久化原理[摘自JavaEye]
    SQLSERVER条件语句IF应用
  • 原文地址:https://www.cnblogs.com/cz007/p/9325860.html
Copyright © 2011-2022 走看看