zoukankan      html  css  js  c++  java
  • 网络编程知识及TCP协议

    网络编程知识及TCP协议

    1 网络基础相关的知识

    (1)     架构

    1. C / S架构 : client客户端 和 server服务器端 

                         优势 : 能充分发挥PC机的性能

    1. B / S架构 : browser浏览器 和 server服务器   隶属于C/S架构

                         优势 : B / S架构 统一了应用的接口.

    (2)     通信的事:

    1. 同一台电脑上两个py程序通信  : 打开一个文件
    2. 两个电脑如何通信 : 连一个网线
    3. 多个电脑通信 :

      ex : 电脑1(源)要找电脑2(目标)

              电脑1首先发送一个请求帧,期中包含(我的ip是192.168.1.1,我的mac地址是xxxxxxxx,我要找ip地址为192.168.1.2的主机),将此请求发送给交换机.

              交换机要广播这条消息给其他所有的主机

              目标主机接收到消息后,对比发现自己就是被找的主机,回复给交换机信息(我的ip地址是192.168.1.2,我的mac地址是yyyyyyyyy,请回复给ip地址为            192.168.1.1,mac地址为xxxxxxx的主机)

               交换机单播形式返回给源主机

       1  mac地址 : 是一个物理地址,全球唯一,  类似于身份证

       2  ip地址:    是一个四位点分十进制,它标识了计算机在网络中的位置.类似于 学号

       3  交换机的通信方式:

             广播 : 吼一嗓子

             单播 : 一对一

             组播 : 一对多

       4  arp协议 :  通过目标ip地址获取目标mac地址的一个协议.

       5  端口 : 操作系统为本机上每一个运行的程序都随机分配一个端口,其他电脑上的程序可以通过端口获取到这个程序

          ip地址 + 端口 能唯一找到某台电脑上的某一个服务程序

       6  路由器 : 连接不同网段 , 路由

       7  网关   : 类似于一个局域网的出口和入口

       8  网段   : 一个局域网内的ip地址范围

       9  子网掩码 : 子网掩码 &  ip地址  得到网段

       10  osi 五层模型:

             应用层       :  http,https,ftp

             传输层       :  tcp / udp          四层交换机  四层路由器

             网络层       :  ip协议            路由器  三层交换机

             数据链路层   :  arp协议           以太网交换机  网卡  网桥

             物理层       :  传输电信号        集线器  网线   光纤

    TCP的聊天室   

      服务器代码

    import socket

     
    sk = socket.socket()
     
    sk.bind(("127.0.0.1",8888))
     
    sk.listen()
    while 1:
        conn,addr = sk.accept()
        while 1:
            = input("发送:")
            conn.send(s.encode())
            if == "q":
                break
            ss = conn.recv(1024).decode()
            print("接收:"+ss)
            if ss =="q":
                break
    conn.close()
    sk.close()
      客户端代码
    import socket
     
    sk = socket.socket()
     
    sk.connect(("127.0.0.1",8888))
     
    while 1:
        = sk.recv(1024).decode()
        print("接收:"+s)
        if == "q":
            break
        ss = input("发送:")
        sk.send(ss.encode())
        if ss == "q":
            break
    sk.close()
     
  • 相关阅读:
    测试开发进阶之路,2020 我们砥砺同行!
    【上海/北京/杭州】七牛云工程效率部直聘
    测试开发基础|一文搞定计算机网络(一)
    点点点工程师真的要被淘汰吗?
    电商性能测试实战 | JMeter 插件 Ultimate Thread Group 完成梯度递增场景的压测
    将H264与AAC打包Ipad可播放的TS流的总结
    Ubuntu阿里云搭建Mono.net环境
    利用正则表达式排除特定字符串
    你敢不敢不要让我这么忙
    离我而去的附录H
  • 原文地址:https://www.cnblogs.com/123zzy/p/9475734.html
Copyright © 2011-2022 走看看