网络通信 & 初识socket
本节主要内容:
1.客户短\服务端架构
2.网络通信的流程
3.初识socket
一.客户端\服务端架构
客户端\服务端架构:
软件C\S架构:客户端\服务端架构:京东,淘宝,今日头条,qq,微信.....
B\S架构:浏览器(browser)\服务端>>>统一接口,例: 微信上的小程序
硬件C\S架构: 打印机.
二.网络通信的流程
网络通信中的一些基本概念:
网线:传送电信号
网卡: 提供网络接口,接收电信号
MAC地址: 长度为48位二进制, 通常由12位16进制数表示(前六位是厂商编号, 后六位是流水线号), 每块网卡出厂时都被烧制了全球唯一的mac地址.
Ethernet规定接入Internet的设备都必须具备网卡, 发送端和接收端的地址便是网卡的地址.
查看mac地址的方法:windows下在cmd窗口输入ipconfig -all指令:下面显示的这个物理地址就是mac地址。
集线器:将所有连接到集线器的网络设备连通起来
交换机: 升级版的集线器
路由器:用来转发消息
路由协议:用来计算转发消息的最优路径
IP地址: 互联网协议地址, 它是IP协议提供的一种统一的地址格式, 它为互联网上的每一个网格和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异.在IPv4里有32位二进制数组成, 通常被分割为4个8位二进制数, 由四个点分十进制数表示.
DHCP服务: 是一个局域网的网络协议, 使用UDP协议工作, 用于内部网络自动分配IP地址
子网掩码: 格式与IP地址一样, 将某个IP地址划分成网络地址和主机地址两部分, 用来判断两个IP地址是否在一个网段.1表示网络地址, 0表示主机地址.
网关: 一个网络通向其他网络的IP地址, 即路由器的IP地址
DNS: 进行域名(domain name)和与之相对应的IP地址 (IP address)转换的服务器
广播: 将源MAC地址,目标MAC地址及信息通过交换机和路由器发送给局域网内的所有其他设备
ARP协议: 地址解析协议,主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址.
网络通信的流程:
关于网络通信的整个流程请点击链接查看.
三.初识socket
socket是实现网络编程的工具, 以下是两段简单的代码.
import socket
#创建一个socket对象
server = socket.socket() #相当于创建了一部电话
ip_port = ('192.168.111.1',8001) #创建一个电话卡
server.bind(ip_port) #插上电话卡
server.listen(5) #监听着电话,我能监听5个,接到一个电话之后,后面还能有四个人给我打电话,
但是后面这四个人都要排队等着,等着我第一个电话挂掉,再来第6个的时候,第六个人的手机会报错
print('')
#等着别人给我打电话,打来电话的时候,我就拿到了和对方的这个连线通道conn和对方的电话号码addr
conn,addr = server.accept() #阻塞住,一直等到有人连接我,连接之后得到一个元祖,里面是连线通道conn和对方的地址(ip+端口)
print('')
print(conn)
print('>>>>>>>>>',addr)
while True:
from_client_data = conn.recv(1024) #服务端必须通过两者之间的连接通道来收消息
from_client_data = from_client_data.decode('utf-8')
print(from_client_data)
if from_client_data == 'bye':
break
server_input = input('明威说>>>>:')
conn.send(server_input.encode('utf-8'))
if server_input == 'bye':
break
conn.close() #挂电话
server.close() #关手机
import socket
import time client = socket.socket()
server_ip_port = ('192.168.111.1',8001) client.connect(server_ip_port) while True:
client_input = input('小文说>>>>:')
client.send(client_input.encode('utf-8')) #给服务端发送消息
if client_input == 'bye':
break
from_server_data = client.recv(1024) print('来自服务端的消息:',from_server_data.decode('utf-8'))
if from_server_data.decode('utf-8') == 'bye':
break
client.close() #客户端挂电话
网络通信 & 初识socket的更多相关文章
- python 网络内容: 初识socket
一 C\S架构,客户端服务端架构 客户端(client) : 享受服务端提供的服务 服务端(server) : 给客户端提供服务 B\S 浏览器和服务端 B(browser) 二 网络通信的整个流程( ...
- python学习之路---day25( 网络编程基础和初识socket)
基本网络知识和初识socket一:基本知识 网线:传输电信号 集线器:将所有连接到集线器的网络设备连通起来 交换机: 升级版的集线器 网卡:接受电信号 MAC地址:物理地址: 8C-88-4B-88- ...
- day9学python 类+异常处理+初识socket
类+异常处理+初识socket 类的特点: 1.封装-同其他语言 2.继承 py2 经典类深度优先 新式类类名(object)广度优先py3 都是广度优先 3.多态-python本身无多态 可用方法调 ...
- Android 网络通信之Socket
Android 网络通信之Socket 应用软件的网络通信无非就是Socket和HTTP,其中Socket又可以用TCP和UDP,HTTP的话就衍生出很多方式,基础的HTTP GET和POST请求,然 ...
- 网络通信之Socket与LocalSocket的比较
Socket与LocalSocket都可以实现网络通信,两个有什么区别呢? LocalSocket其通信方式与Socket差不多,只是LocalSocket没有跨越网络边界. 于是,思考到一个问题:a ...
- 1、初识socket
经过近一个半月的学习我们已经度过了python基础的阶段,今天我们开始学习python网络编程,没有难以理解的逻辑,更注重的是记忆. 对网络协议和基础没有概念的可以在阅读本文前预习计算机基础3.网络协 ...
- 28、初识socket(subprocess模块)
经过近一个半月的学习我们已经度过了python基础的阶段,今天我们开始学习python网络编程,没有难以理解的逻辑,更注重的是记忆. 本篇导航: 客户端/服务器架构 scoket与网络协议 套接字 基 ...
- Android网络通信之Socket
在移动APP开发中.网络通信数据传输是必定存在的.移动APP离开了网络通信数据传输的功能方式,就好比一潭死水,永远都 是原来的样子. 提到网络通信传输数据.首先出如今程序猿脑海中的是HTTP协议传输, ...
- python中的网络通信,socket、select、selectors、socketserver
楔子 网络通信用于获取一个算法在本地运行所需的数据,还可以共享信息实现分布式处理,另外可以用来管理云服务. python的标准库提供了一些模块来创建网络服务以及访问现有服务ipaddress模块提供了 ...
随机推荐
- Collections集合工具类的方法
addAll & shuffle: 返回类型为boolean类型,执行完操作不接收也行: 其中,静态方法,与对象无关,类名点方法名直接调用: 点点点为可变参数,随便填写几个参数都可以: sor ...
- Linux基础命令---显示登录用户w
w 显示哪些用户登录,并且显示用户在干什么.报头按此顺序显示当前时间.系统运行时间.当前登录用户数以及过去1.5和15分钟的系统平均负载.接着为每个用户显示以下条目:登录名.TTY名称.远程主机.登录 ...
- Linux基础命令---文本格式转换expand,unexpand
expand 将文件中的tab转换成空格,结果送到标准输出.如果没有指定文件,那么从标准输入读取. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUSE.F ...
- java == 与 equals 相同与不同点
java中与很多有意思又值得深究的点. 写这篇文章呢,是由于在百度知道中看到一个问题:怎样比较两个对象是否相同.这又使我想到了另外一个问题,== 和 equals有什么不同?写了几行代码,看了几篇文章 ...
- bzoj3678 简单题
题目链接 bitset #include<algorithm> #include<iostream> #include<cstdlib> #include<c ...
- 编写一个JavaWeb项目
基本流程:JSP文件显示页面,在前端页面输入赋值,使用form或href超链接传值到Servlet中方法,在Servlet方法中调用Dao层的类对象,将数据传到数据库中,并实现对数据库里的数据的增删改 ...
- 传统OGG与Microservice Architecture OGG的通信
针对当前新出的ogg microservice architect(MA),现在只支持oracle 11g/12c的数据复制和投递.如果有其它版本的oracle或其它数据库,比如 mysql, db2 ...
- The Little Prince-11/30
The Little Prince-11/30 Today, I have a meeting in our department. I sincerely hope that all of my d ...
- 使用Wisdom RESTClient自动化测试REST API,如何取消对返回的body内容的校验?
使用Wisdom RESTClient V1.1 自动化测试API,默认是对返回HTTP状态码和body内容进行校验的. 如果您的API返回body内容是变化的,可以通过设置来取消对body内容的校验 ...
- Java的类的详解
首先呢,我承认上一次我理解的有误. 1.构造方法的作用:是初始化一个对象,而不是成员变量,它和get和set方法都有给成员变量赋值的功能. 2.下来说一下JVM调用main方法的过程: a.静态变量赋 ...