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

    1.理论知识

    2.通信 -- 程序编码


    架构 -- 程序员开发的一种模式
    C/S架构 客户端/服务器模式

    B/S架构 Browser浏览器 / 服务器模式
    B/S架构的优势: 统一了应用的接口

    网络通信编程:
    同一台电脑上两个py文件通信 --- 文件

    两台电脑 如何通信? --- 一根网线

    多台电脑(在同一个局域网)  如何通信? --- 交换机

    更多台电脑(不在同一个局域网)   如何通信? --- 交换机+路由器

    网卡:mac地址(物理地址),一般是由网卡生产厂商给的,不能随便给,要遵循一定的规则,因为mac地址要求全球唯一.

    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   网段

    网段是由IP地址的前三位决定的.例:(192.168.1)这就是一个网段,第四位数大于等于 0 小于 256 ,他们都是一个网段的.

    用网段来确定一个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协议,网卡

    物理层  网线,集线器,光纤

    TCP协议编码:  服务器  和  客户端

    服务器:

    import  socket

    sk = socket.socket()      #里面什么参数都不写,默认是TCP协议

    sk.bind(("ip地址",端口号))   # 端口号:0-65535     0 - 1023(不能用)  8000 - 10000

    sk.listen()           #监听            (建议用的端口号)

    conn,addr = sk.accept()      #接通

    ret = conn.recv(1024)      #接收

    print(ret)      #接收的是bytes类型.

    conn.close()

    sk.close()

    客户端:

    import  socket

    sk = socket.socket()

    sk.connect(("服务器的IP地址",服务器的端口号))  #与服务器建立联系

    sk.send(bytes类型)    #给服务器发送内容,内容必须是bytes类型

    sk.close()

     

    =================================================================

    必须背过的东西,面试题

    1.arp协议

    2.tcp和udp的区别

    3.tcp三次握手和四次挥手

    4.什么是协议

    5.tcp协议编码流程

  • 相关阅读:
    《机电传动控制》学习笔记08-1
    《机电传动控制》学习笔记-07
    《机电传动控制》学习笔记-06
    《机电传动控制》学习笔记05-2
    《机电传动控制》学习笔记05-1
    《团队项目》日志一
    《实时控制软件》第四周作业
    《实时控制软件》第三周作业
    《实时控制软件》第二周作业
    《机电传动控制》PLC仿真
  • 原文地址:https://www.cnblogs.com/fengkun125/p/9330765.html
Copyright © 2011-2022 走看看