1、计算机网络基础

 C/S  客户端/服务器端

 B/S  浏览器端/服务器端

mac地址,ip地址,子网掩码,与计算得到网段,端口号
每台计算机的网卡都有全球唯一的地址,在生产时已经写进去了。 ip地址
是4个点分十进制 - ipv4协议
0.0.0.0 - 255.255.255.255
127.0.0.1 本机
内网字段 192.168.****
10.****
172.***
6个点分十进制 - ipv6协议
0.0.0.0.0.0 - 255.255.255.255.255.255
交换机
广播
单播
组播 arp协议 : 通过IP地址获取某一台机器的mac地址
将mac地址解析为ip地址,方便使用;RARP协议则是将ip转为mac。 子网掩码
子网掩码 和 ip地址进行 按位 与 运算 就能得出一个机器所在的网段
192.168.21.36
11000000.10101000.00010101.00100100
255.255.255.0 255.255.0.0
11111111.11111111.11111111.00000000
11000000.10101000.00010101.00000000 192.168.21.0 网段 网关地址 : 整个局域网中的机器能沟通过网关ip与外界通信
网段 : 子网掩码 和 ip地址进行 按位 与 运算
端口 : 0-65535 8000-酷狗音乐 22-ssh 3306-mysql
python 网络应用 8000
ip地址+端口号 : 在全网找到唯一的一台机器+唯一的应用
我们选择端口 : 8000之后 ip地址分为几类:公有地址、私有地址(192.168.0.0 172.10.0.0)
ip地址是为了计算机的唯一标识,端口号是应用程序的标识,
ip + port就是网络上的唯一地址定位 tcp协议
TCP是全双工的、面向连接的,可靠的并且是精确控制的协议。 一旦连接建立起来,那么连接两端的机器能够随意互相通信
面向连接的通信方式
数据安全不容易丢失
建立连接的 三次握手 ******
断开连接的 四次挥手 ****** tcp的数据段格式:
TCP - Transport Control Protocol
Source Port: 源端口号
Destination Port: 目的地端口号
Dequence Number: 序列号
Ack Numbers: 确认应答号
Offset: 头长度
Reserved: % 保留 总是被设置为零
Code: % 代码位
Ack is valid
Push Request
Window: 窗口
Checksum: Ox61a6 校验和
Urgent Pointer: 紧急
No TCP Options 选项
TCP Data Area: 数据
vL..+..+ .+. 4c 2b 2b
2b +. 2b
Frame Check Sequence:Ox0d0000f
UDP 用户数据报协议
面向过程的,不需要确定是否收到的 OSI参考模型 是7层 编程关心的:5层模型
应用层
传输层 TCP UDP 四层交换机、四层路由器
网络层 IP 路由器、三层交换机
链路层 MAC arp rarp 网卡、交换机
物理层 电信号 网线、集线器、中继器

2、socket模块

1)基本使用

服务器端:

 import socket

 # 服务器端 流程

 sk = socket.socket()  # 类似买手机和手机卡

 sk.bind(('127.0.0.1', ))  # 将手机卡绑定到手机上

 sk.listen()                 # 听着手机是否有电话打来

 conn, addr = sk.accept()    # 接到电话,查看来电显示知道对方的地址

 act = conn.recv()               # 接听电话
'''
File "D:/python_bases/day30/server.py", line , in <module>
act = sk.recv() # 接听电话
OSError: [WinError ] 由于套接字没有连接并且(当使用一个 sendto 调用发送数据报套接字时)没有提供地址,
发送或接收数据的请求没有被接受。
'''
print(act) conn.send(b'hello python socket client! I have recv your msg!') # 打电话 conn.close() # 挂电话 sk.close() # 关手机
'''
File "D:/python_bases/day30/server.py", line , in <module>
socket.close() # 关手机
AttributeError: module 'socket' has no attribute 'close'

客户端:

 import socket

 # 客户端 流程

 sk = socket.socket()  # 类似买手机

 sk.connect(('127.0.0.1', ))   # 输入电话号码

 sk.send(b'Hello Python Socket Server!')   # 发送消息

 act = sk.recv()       # 接收消息
print(act) sk.close() # 关闭手机

2)进阶使用

服务器端:

 import socket

 sk = socket.socket()
sk.bind(('127.0.0.1', ))
sk.listen()
conn, addr = sk.accept() while :
rec = conn.recv().decode(encoding='utf-8')
if rec == 'bye':
conn.send(b'bye')
break
print(rec)
ipt = input('>>>>>>>>').strip()
conn.send(bytes(ipt, encoding='utf-8')) conn.close()
sk.close()

客户端:

 import socket, time

 sk = socket.socket()
sk.connect(('127.0.0.1', 8080)) this_sec = time.time()
tm = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(this_sec))
time.sleep(0.2)
rec = sk.send(bytes(tm, encoding='utf-8')) while 1:
rec = sk.recv(1024).decode(encoding='utf-8')
if rec == 'bye':
sk.send(b'bye')
break
print(rec)
ipt = input('>>>>>>>>').strip()
sk.send(bytes(ipt, encoding='utf-8')) sk.close()

Python网络编程基础 ❶ 计算机网络基础 初用socket模块的更多相关文章

  1. 6.Python网络编程_全局变量基础

    变量作用域: 一般在函数体外定义的变量成为全局变量,在函数内部定义的变量称为局部变量.全局变量所有作用域都可用,局部变量只能在本函数可用,变量的使用顺序是,局部变量 > 全局变量, 也就是说:优 ...

  2. Python网络编程之网络基础

    Python网络编程之网络基础 目录 Python网络编程之网络基础 1. 计算机网络发展 1.1. OSI七层模型 1.2. 七层模型传输数据过程 2. TCP/IP协议栈 2.1 TCP/IP和O ...

  3. Python网络编程基础pdf

    Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...

  4. python网络编程基础(线程与进程、并行与并发、同步与异步、阻塞与非阻塞、CPU密集型与IO密集型)

    python网络编程基础(线程与进程.并行与并发.同步与异步.阻塞与非阻塞.CPU密集型与IO密集型) 目录 线程与进程 并行与并发 同步与异步 阻塞与非阻塞 CPU密集型与IO密集型 线程与进程 进 ...

  5. 好书推荐---Python网络编程基础

    Python网络编程基础详细的介绍了网络编程的相关知识,结合python,看起来觉得很顺畅!!!

  6. Python网络编程基础|百度网盘免费下载|零基础入门学习资料

    百度网盘免费下载:Python网络编程基础|零基础学习资料 提取码:k7a1 目录: 第1部分 底层网络 第1章 客户/服务器网络介绍 第2章 网络客户端 第3章 网络服务器 第4章 域名系统 第5章 ...

  7. Python网络编程基础 PDF 完整超清版|网盘链接内附提取码下载|

    点此获取下载地址提取码:y9u5 Python网络编程最好新手入门书籍!175个详细案例,事实胜于雄辩,Sockets.DNS.Web Service.FTP.Email.SMTP.POP.IMAP. ...

  8. python 网络编程 TCP/IP socket UDP

    TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...

  9. python 网络编程要点

    From http://www.zhihu.com/question/19854853 Python网络编程是一个很大的范畴,个人感觉需要掌握的点有:1. 如何使用Python来创建socket, 如 ...

  10. python网络编程应用(一)

     在之前的一篇博客<python网络编程基础>中介绍了socket.socket()函数及其应用,其实socket模块中还有很多属性可供网络应用程序使用.这里将详细讲解一下socket模块 ...

随机推荐

  1. Acwing43 不分行从上往下打印二叉树

    地址 https://www.acwing.com/problem/content/description/41/ 从上往下打印出二叉树的每个结点,同一层的结点按照从左到右的顺序打印. 样例 输入如下 ...

  2. P4728 [HNOI2009]双递增序列

    题意 这个DP状态有点神. 首先考虑一个最暴力的状态:\(f_{i,j,k,u}\)表示第一个选了\(i\)个,第二个选了\(j\)个,第一个结尾为\(k\),第二个结尾为\(u\)是否可行. 现在考 ...

  3. This compilation unit is not on the build path of java project (此编译单元不在java项目的生成路径上)

    This compilation unit is not on the build path of a Java project 解决办法​ 索发现,大致是因为项目文件缺失. 解决办法:找到项目根目录 ...

  4. angular路由事件

    Angular 4检测路由变化,可以使用router.events来监听: 支持的事件类型: NavigationStart:导航开始 NavigationEnd:导航结束 NavigationCan ...

  5. 关于linux的权限系统知识点(drwxr-xr-x)

    在Linux系统中使用 ll 命令可以看到文件的权限信息,如图: 接下来主要解释一下这些权限的含义: 可以看到总的十个字符: 1.第一个字符表示文件类型: d 表示是目录 - 表示是文件 l 表示是链 ...

  6. 源码学习之Spring (系统架构简单解析)

    Spring Framework 系统架构总览图 Spring Framework的模块依赖关系图 Spring Framework各个模块功能说明 Spring核心模块 模块名称 主要功能 Spri ...

  7. SpringBoot系列之快速创建项目教程

    本博客简介一下SpringBoot快速创建工程的方法,主要介绍一下Spring Initializer,Spring Initializer是IntelliJ IDEA才集成的一种快速创建Spring ...

  8. html的特殊符号对照表

    HTML的特殊符号对照表. 特殊符号 命名实体 十进制编码 特殊符号 命名实体 十进制编码 特殊符号 命名实体 十进制编码 Α Α Α Β Β Β Γ Γ Γ Δ Δ Δ Ε Ε Ε Ζ Ζ Ζ Η ...

  9. 【CF1053E】Euler tour

    [CF1053E]Euler tour 题面 CF 洛谷 大概意思是你有一棵树,然而你并不知道这棵树是啥.给你一个确定了一些位置的欧拉序(就是\(ST\)表求\(LCA\)的那个序列),问你是否存在一 ...

  10. 2019-7-3-WPF-使用-Win2d-渲染

    原文:2019-7-3-WPF-使用-Win2d-渲染 title author date CreateTime categories WPF 使用 Win2d 渲染 lindexi 2019-07- ...