精华内容
下载资源
问答
  • 不同电脑进程之间如何通信注意:2. 什么是socket3. 创建socket说明:说明 1. 不同电脑进程之间如何通信 首要解决问题是如何唯一标识一个进程,否则通信无从谈起! 在1台电脑上可以通过进程号(PID)来...

    socket简介

    1. 不同电脑上的进程之间如何通信

    首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!

    在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的。

    其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用进程(进程)。

    这样利用ip地址,协议,端口就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互

    注意:
    • 所谓进程指的是:运行的程序以及运行时用到的资源这个整体称之为进程(在讲解多任务编程时进行详细讲解)
    • 所谓进程间通信指的是:运行的程序之间的数据共享
    • 后面课程中会详细说到,像网络层等知识,不要着急

    2. 什么是socket

    socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:

    它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的

    例如我们每天浏览网页、QQ 聊天、收发 email 等等

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-VPcQeTbD-1579681203510)(../Images/04day/5B1ZLMH51VK5_55.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UbsOBlfB-1579681203512)(../Images/04day/20101130174614758.gif)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Kk4sK7IU-1579681203512)(../Images/04day/e89a8ffb13931691b73d16.png)]

    3. 创建socket

    在 Python 中 使用socket 模块的函数 socket 就可以完成:

    import socket
    socket.socket(AddressFamily, Type)
    

    说明:

    函数 socket.socket 创建一个 socket,该函数带有两个参数:

    • Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET
    • Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)

    创建一个tcp socket(tcp套接字)

    import socket
    
    # 创建tcp的套接字
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # ...这里是使用套接字的功能(省略)...
    
    # 不用的时候,关闭套接字
    s.close()
    

    创建一个udp socket(udp套接字)

    import socket
    
    # 创建udp的套接字
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # ...这里是使用套接字的功能(省略)...
    
    # 不用的时候,关闭套接字
    s.close()
    
    说明
    • 套接字使用流程 与 文件的使用流程很类似
      1. 创建套接字
      2. 使用套接字收/发数据
      3. 关闭套接字
    展开全文
  • 所谓无线网络,既包括允许用户建立远距离无线连接的全球语音和数据网络,也包括为近距离无线连接进行优化的红外线技术及射频技术,与有线网络的用途十分类似,最大的不同在于传输媒介的不同,利用无线电技术取代网线...
  • 但一个基本上大家都同意观点,IT有以下三部分组成:传感技术、通信技术和计算机技术。在生产快速增长同时,主要电子产品产销衔接较好,全行业产销率为96.6%。根据我部重点产品监测情况,大部分产品产销两旺,...
  • 但所有的通信设备都需依赖于通信网络不同于飞速迭代发展的陆地通信,在浩瀚的海洋上,由于海洋环境复杂多变、海上施工难度大等因素,海洋通信的发展明显滞后。______________________________滑动查看电影《断片之...

    要问现代人最离不开什么,通信设备一定是必选项,手机、电脑等已成为了多数人生活和工作的标配。

    但所有的通信设备都需依赖于通信网络,不同于飞速迭代发展的陆地通信,在浩瀚的海洋上,由于海洋环境复杂多变、海上施工难度大等因素,海洋通信的发展明显滞后。

    b7251c707e10d411d657bbba47bc55b3.png
    _____
    75f63c56af61ff82112fa9282a61f989.png
    _____
    7e60580d50d102c91deca698a58c63f0.png
    _____
    6c0d05477293f4b9a51af68249bf728f.png
    _____
    be188eb4f7bf2d42ca6b854717aea21a.png
    _____
    _____

    滑动查看电影《断片之险途夺宝》截图

    那么,怎样促进新一代海洋通信技术的提升、推动海洋的开发与探索?

    2017年底,广东启动了全省首批4家实验室建设,目的是培育创建国家实验室、打造国家实验室预备队。其中,网络空间科学与技术实验室落户深圳,“鹏城实验室”正式成立。鹏城实验室对应新一代信息技术应用,“南海立体通信网络示范验证平台”成为了鹏城实验室首先开展的重要项目之一。

     “南海立体通信网络示范验证平台”项目的目的就是要探索研究适用于海洋环境的新型通信网络架构与技术,辐射南海、服务国家海洋强国战略,针对南海的大地域和时空跨度搭建一个立体的通信网络。目前南海的通信网络速度只相当于陆地30年前的水平,可以说,该项目的研究对国防建设、海洋渔业、旅游业等都有重要意义,例如,海上的通讯设备不再局限于卫星电话,使用手机通话或视频也有望实现。

    dfce82ce9f30fef97e8ffb4fb7980850.png

    鹏城实验室

    为了更好的网络研究效果,鹏城实验室负责南海项目的课题组,需要在本地构建南海立体网络仿真测试环境和内外场示范验证环境,供科研人员进行相应科研实验。也就是说,需要在实验室里,模拟海洋上面复杂的通信环境、研究地理位置、洋流、天气、气候等因素对信息通讯的影响

    由于网络仿真技术要求复杂,经过技术能力及服务水平等多方面的考察后,鹏城实验室最终选择了UCloudStack企业专有云,成为其云平台搭建的重要伙伴。

    ddb5378ac2de350adcb719d93edd1ab1.png

    鹏城实验室项目架构图

    UCloudStack是新一代轻量级企业专有云平台,提供纯软件交付和超融合一体机交付等方式,适用于受安全或合规限制,短期无法使用公有云,但有云化或虚拟化需求的用户场景。

    鹏城实验室南海通信一期云平台项目整体均为高可用架构,UCloudStack提供纯软件交付,提供弹性伸缩的云资源服务能力、简洁高效的人机交互界面,整体提升了实验项目的交付及运维效率:

    1

    使用虚拟化技术,提升资源利用率,通过一套UCloudStack平台实现对底层异构资源的统一管理。

    从网络设备到服务器接入乃至云平台资源池的搭建,UCloudStack云平台分别通过分布式网络、分布式存储及智能调度等技术,保证实验室全平台的可用性和稳定性,同时均采用双万兆聚合链路,保证云平台及业务的性能;

    在服务节点方面, UCloudStack云平台采用X86通用服务器构建,通过云平台提供的托管网关与实验室原有硬件打通,提供内网混合云接入服务。

    2

    通过简单的界面UI操作,即可完成资源的创建及调度,快速搭建实验环境,全平台功能所见即所得,简单易用。

    UCloudStack 云平台的核心能力包括虚拟化、分布式存储、分布式网络、数据库缓存服务及云管理平台,不仅可以为南海通信课题组提供诸如虚拟机、镜像、云硬盘、弹性网卡等基础IaaS产品,还可提供NAT网关、负载均衡、高可用MySQL及Redis等自动化运维产品及服务,有效提升用户管理资源的效率。在数据安全层面,UCloudStack 提供的分布式存储支持三副本数据存储机制,在保证数据安全的同时,提升数据存储的性能。

    针对鹏城实验室无法虚拟化及上云的物理机环境及业务,为解决快速交付和网络连接场景,UCloudStack 提供托管网关服务,让南海项目课题组像使用物理机的内网一样,访问IDC物理网集群的应用。由于整个场景通过万兆链路连接且是内网互通,可在保证通信性能的同时,给予一定程度的网络安全性保障。

    3

    轻量级的云平台,短时间即可部署完成,支持水平扩展计算和存储资源,结合运营运维平台,助力南海课题组轻松部署和运维。

    运维管理方面,UCloudStack为鹏城实验室提供了运营运维管理平台,可进行整体云平台的资源配置及管理,支持虚拟资源的在线迁移和宕机迁移,并支持查看、管理平台上所有已部署的集群、物理及虚拟资源管理。此外,还为实验室管理员提供云平台整体的服务质量(QoS)、计费配额及账户充值等相关管理服务。

    4

    铁三角架构保障平台效果,并为课题组提供额外的技术咨询服务。

    基于鹏城实验室南海项目课题组对云平台的需求,UCloud客户经理、架构师、技术经理迅速组成铁三角服务团队,除云平台搭建外以外,还为课题组提供K8S及网络建设咨询服务,分享技术经验,为课题组带来项目上的启发与帮助。

    同时,UCloud作为纯内资的中立云计算公司,可充分保证云平台上的实验数据被安全使用,为鹏城实验室的项目研究增加了一道“防护锁”。

    此次鹏城实验室南海项目一期,整体云平台的部署仅耗时一周,目前已全部交付完毕,并在一期基础上,完成了二期部分节点资源扩容,用于支撑鹏城实验室科研仿真实验领域的基础设施平台,接下来,UCloud也将持续为鹏城实验室提供云技术支持,确保各项科研项目的顺利进行。

    a51042aa44a8d8cf994edffbd30390b0.gif

    热文回顾

    1、UCloud优刻得首批获得“上海市人工智能创新中心”授牌

    2、有用有趣的菜谱,云上“智造”!

    3、畅享AI课堂,科大讯飞在云端打造“AI大学”

    4、UCloud与厦门港务集团、西井科技达成战略合作,共建智慧港口

    展开全文
  • 本文将探讨什么无线通信测试,以及ADI产品如何适应其信号链。  简而言之,我们可将无线通信测试分类为实验室测试和生产测试。实验室测试本质旨在支持与手机、平板电脑或笔记本电脑开发相关设计以及系统集成...
  • python_网络网络通信

    2019-06-20 16:29:34
    一、网络网络通信 同一个python程序内的不同函数如何共享数据 ...不管你的手机和你的电脑,或者你的手机和别人的手机,或者的电脑和别人的电脑,只要有网都可以进行通信 使用qq、微信聊天...

    一、网络和网络通信

    同一个python程序内的不同函数如何共享数据
    同一个电脑2个python程序如何共享数据
    那么不同电脑如何实现共享数据
    image

    那么有了网络之后,可以QQ 百度网盘,微信等等实现数据的共享
    以上都是网络的体现, 因为有了网络才实现了通信以及数据共享

    不管是你的手机和你的电脑,或者是你的手机和别人的手机,或者是你的电脑和别人的电脑,只要有网都可以进行通信
    使用qq、微信聊天等
    通过浏览器来浏览页面、看京东的网站等
    通过优酷、快播看片等等等
    网络
    网络的核心, 让你的数据和另外一方的数据共享, 不管是通过有线, 或者无线等等, 都可以称之为网络功能

    网络通信
    是通过网络将各个孤立的设备进行连接,通过信息交换实现人与人,人与计算机,计算机与计算机之间的通信

    二、软件开发架构
    两个程序之间的通信大致分为两种

    应用类:QQ、微信、soul、优酷等等需要安装的app或桌面应用
    web类:百度、京东等需要使用浏览器浏览
    以上分别对应了两个软件开发架构:

    1、C/S架构
    客户端(Client): 需要时才请求,像QQ、微信、优酷、新浪app 等需要下载的app或者桌面应用程序

    服务端(Server): 一直运行,等待被连接或被请求并提供服务

    腾讯 / 游戏选区选择的就是服务器
    服务器就是一台为我们提供服务的机器
    客户端就是接收数据的那一个应用程序
    2、B/S架构
    浏览器(Browser): 通过浏览器浏览网页
    服务端
    使用浏览器浏览京东网页的时候,浏览器是客户端,京东是服务端
    3、B/S 与 C/S 之间的关系
    包含关系

    浏览器也是一种客户端, 只不过这里面的客户端是用浏览器实现的, 所以他又有了另外一个名字
    网络通信基本概念
    网卡
    将计算机或者路由器连接到传输介质上的接口,传输介质可以是有线,也可以是无线, 又称网络接口控制器,网络适配器(network adapter)或局域网接收器(LAN adapter)

    image

    MAC地址
    MAC地址,也叫硬件地址
    是物理设备的唯一标识,出厂的时候被设定,每块网卡出厂时都被烧制上一个mac地址,一个设备的mac地址是全球唯一的
    MAC地址用于在网络中唯一标识一块网卡,一台设备若有一或多个网卡,则每个网卡都需要并会有一个唯一的MAC地址
    IP地址
    在网络中, 使用飞秋发消息, 并且指定发送人, 消息就可以被送达指定地址, 因为被标记了一个唯一的地址, IP地址

    就像寄快递, 写明收件人, 那么快递就会按照收件人的地址送达指定位置
    image

    IP地址是指互联网协议地址,是IP Address的缩写。IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,IP地址唯一标记了网络中的每一台主机

    IP地址不能相同
    image

    IP地址重复,会导致数据送达位置不准确, 影响两台主机正常的网络通信
    查看本机IP地址
    打开网络和共享中心 --> 更改适配器 --> 找到对应网卡 --> 修改属性 --> Ipv4
    win + R --> cmd --> ipconfig
    IP地址版本
    ipv4(ip version4)
    .***.***.
    256256256*256

    实际上 : 0不能用, 255不能用

    全球ip每个国家,每个省份等等还会划分属于自己的IP地址
    ipv6
    为了解决日后全球IP不够用的问题诞生了ipv6
    IP地址的组成
    image

    网络号
    主机号
    网络号用于标记网络, 区分属于哪一个局域网
    主机号标记同一个局域网的某一台主机

    IP地址的分类
    最初设计互联网络时,为了便于寻址以及层次化构造网络,每个IP地址包括两个标识码(ID),即网络ID和主机ID。

    同一个物理网络上的所有主机都使用同一个网络ID,网络上的一个主机有一个主机ID与其对应

    Internet委员会定义了5种IP地址类型以适合不同容量的网络(根据网络里用到的主机数不一样, 划分了5种类型),即A类~E类

    image

    随着时代的发展, 社会的进步, 那么256已经不能满足人们的需求, 于是乎诞生了B 类IP

    随着时代的发展, 社会的进步, 那么256已经不能满足人们的需求, 于是乎诞生了A 类IP

    D 类是用于广播,多点广播地址用来一次寻址一组计算机

    E 类不用,早起发明的时候,是为了留存,后来诞生了ipv6, 基本不使用, 仅实验和开发用

    其中A、B、C 3类(如下表格)由InternetNIC在全球范围内统一分配,D、E类为特殊地址
    image

    局域网和广域网
    局域网
    1、 局域网就是在固定的一个地理区域内由2台以上的电脑用网线和其他网络设备搭建而成的一个封闭的计算机组
    2、 局域网可以是独立封闭运行的,也可以是和外网相连接的
    广域网
    又称广域网、外网、公网

    1、 是连接不同地区局域网的通信远程网。通常跨接很大的物理范围,它是由无数个局域网+独立服务器构成的。
    2、 所覆盖的范围从几十公里到几千公里,它能连接多个地区、城市和国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络
    交换机
    解决多台电脑同时通信就需要借助交换机

    image

    交换机主要是用于组建局域网

    网关
    网关(Gateway)又称网间连接器、协议转换器。它是局域网通往外界的一大关卡, 是一个网络连接到另一个网络的“关口”
    image

    作用

    网络A的IP地址范围为“192.168.1.1~192.168.1.254”,子网掩码为255.255.255.0
    网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0

    两个网络中的主机处在不同的网络里
    要实现这两个网络之间的通信,则必须通过网关。

    如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。
    所以说,只有设置好网关的IP地址,才能实现不同网络之间的相互通信
    路由
    路由器是一个物理设备, 负责让主机连接外网

    1、 一台路由器下可以有多个计算机,而且这些计算机各有各的局域网IP地址
    2、 局域网电脑访问外部需要通过路由器, 从路由器出去之后,会被分配一个公网IP地址,也叫外网IP,同一局域网共用一个路由器的外部IP地址,通过外网IP上网
    IP 地址的类型
    公网ip
    公网ip具有世界范围的唯一性,在广域网内,公网IP地址都是唯一的

    私网ip
    在同一局域网内,私网IP地址是唯一的。每台电脑都可以自己分配自己的IP,但是这个IP只在局域网中有效
    同一个局域网内共用一个外网IP
    局域网的ip地址范围,只要ip地址在这些范围内的就只能在局域网中通信

    a类网
    10.0.0.0~10.255.255.255
    b类网
    172.16.0.0~172.31.255.255
    c类网
    192.168.0.0~192.168.255.255
    特殊IP:
    127.0.0.1
    这是本机的ip地址,只要涉及本机内部通信,那么就不再走网络
    端口
    image

    当前主机 运行了3个应用程序, 需要和另外一台主机的一个应用程序实现通信,
    除了通信内容和目标IP, 还需要一个端口号, 识别主机上的不同应用程序
    发送 : 内容 + 目标IP + 目标端口

    接收 : 原IP + 原端口 + 内容 + 目标IP + 目标端口

    端口号分类
    打开一个应用程序,操作系统会给这个运行起来的程序一个编号,就是端口号

    1、知名端口
    知名端口是众所周知的端口号,一般是从0-1023(不让用的端口号)

    知名电话号 : 119 120 110

    21/tcp FTP 文件传输协议
    22/tcp SSH 安全登录、文件传送(SCP)和端口重定向
    23/tcp Telnet 不安全的文本传送
    25/tcp SMTP Simple Mail Transfer Protocol (E-mail)
    69/udp TFTP Trivial File Transfer Protocol
    79/tcp finger Finger
    80/tcp HTTP 超文本传送协议 (WWW)
    88/tcp Kerberos Authenticating agent
    110/tcp POP3 Post Office Protocol (E-mail)
    113/tcp ident old identification server system
    119/tcp NNTP used for usenet newsgroups
    220/tcp IMAP3
    443/tcp HTTPS used for securely transferring web pages
    2、动态端口
    动态端口的范围一般是从1024到65535 (让用的端口号)

    一般不固定分配某种服务,而是动态分配
    动态分配是指当一个系统进程或者应用程序进程需要网络通讯时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用, 当这个进程关闭时,同时也就释放了所占用的端口号
    DNS
    负责解析IP地址和域名的映射关系,能够使用户更方便地访问互联网

    image

    网络通信整个流程
    image

    1、打开浏览器,想要访问京东首页,在地址栏输入了网址:www.jd.com

    2、先将请求信息发给了交换机,然后交给了路由器(网关)

    3、 路由发给DNS服务器,通过DNS服务器去解析京东的服务器IP

    4、 路由器通过路由协议找到一个路由转发的最优路径,定位京东服务器,发送给京东的路由器

    5、 京东的路由器发给京东的服务器

    6、 服务器处理请求,按照来时的路径,返回到给电脑一个京东首页的html文件

    7、 电脑收到消息,通过端口号找到浏览器

    8、 浏览器渲染内核解析渲染, 呈现网页

    image

    网络通信协议
    互联网协议 : 定义计算机如何接入internet,以及接入internet的计算机通信的标准

    我们用网址去请求京东服务器,那京东怎么知道我们发的是什么意思, 我们要的是什么东西

    那京东给我们返回来信息时, 京东怎么做能保证他给我们返回来的内容或者数据格式我们能看的懂

    那么就需要一系列的标准来规范以上所有的通信行为, 这些标准称之为互联网协议,互联网上的所有行为都是通过一个一个协议来规范的,又称为‘互联网协议族’(Internet Protocol Suite)
    TCP/IP协议簇
    TCP/IP不是一个协议,而是一组协议的统称, 协作完成网络通信
    分层和多协议的,每一层都是通过若干协议实现
    因为TCP、IP协议是协议族中很重要的两个协议,所以以此命名
    组成
    互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层(一般理解4层即可)

    image

    image

    tcp/ip五层模型
    应用层,表示层,会话层并作应用层

    每层都运行特定的协议,越往上越靠近用户,越往下越靠近硬件
    自上而下逐级依赖
    物理层
    通过用光缆、电缆、双绞线、无线电波等方式把电脑进行连接, 是把电脑连接起来的物理手段,负责传送0和1的电信号
    image

    数据链路层
    单纯的0和1没有任何意义, 多少个电信号算一组?每个信号位有何意义?

    确定0和1的分组方式, 也是定义了电信号的分组方式,一组电信号构成一个数据包,
    这一层通常还提供错误检测和纠正,以确保数据的可靠传输
    image

    网络层
    网络层的功能是建立主机到主机的通信
    引进一套新的地址,使得我们能够区分不同的计算机以及不同的网络,这套地址就叫做”网络地址”,简称”网址”或IP地址
    规定网络地址的协议叫ip协议
    根据IP协议发送的数据,就叫做IP数据包
    image

    “标头”部分主要包括版本、长度、IP地址等信息,”数据”部分则是IP数据包的具体内容
    传输层
    建立”端口到端口”的通信
    网络层的IP帮我们区分局域网以及主机, 通过ip可以确定唯一一台主机,如何标识这台主机上的应用程序, 就是通过端口
    真正的通信指的的是主机中的应用程序间的通信。IP协议虽然能把数据送到目的主机,但是并没有交付给主机的具体应用进程。而端到端的通信才应该是应用程序之间的通信。
    image

    “标头”部分主要定义了发出端口和接收端口,”数据”部分就是具体的内容。然后,把整个UDP数据包放入IP数据包的”数据”部分
    UDP协议
    UDP:用户数据报协议,是OSI模型中一种无连接的传输层协议,它提供无连接的、不可靠的、无确认的端对端数据传送服务
    image

    传输数据之前源端和终端不建立连接
    知道主机和端口号,直接发数据,不用先通气,不安全,简单,速度快, 有可能丢数据
    1、特点:
    无连接。使用UDP传输数据时不需要建立和释放连接,从而减少了数据传输的开销和时延。
    不可靠性,安全性差。不能保证他们是否能到达目的地, 容易丢包
    传输速度快,没有超时重发机制
    2、应用
    QQ (早期)
    发邮件
    飞秋
    某些实时直播:要求以稳定的速度发送,能容忍一些数据的丢失,但不允许有较大的时延
    如IP电话、实时视频会议,可靠数据传输对于这些应用来说并不是最重要的,数据出现较大的延迟,才是它们不可容忍的
    Tcp 传输控制协议
    是一种面向连接的、可靠的、基于字节流的传输层通信协议
    image

    步骤
    建立连接
    收发数据
    关闭连接

    • 通过TCP协议与应用程序通信时,会先发送一个通信请求。这个请求必须被送到一个确切的地址。如果没有收到可以有一个重发机制
    • 在双方“握手”之后,TCP才会在两个应用程序之间建立一个通信连接, 通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止
      应用 :
      打电话: 在通讯之前,一定要先建立相关链接,才能开始说话
      特点:
      建立连接的基础上实现通信
      数据传输安全,稳定性好,可靠
      有超时重发机制,效率相对较慢,相对复杂
      tcp三次握手
      确认双方都具有接收和发送功能的过程
      在这里插入图片描述
      为什么是三次链接不是两次
      确认双方都具有接收和发送功能

    如果C发送一个请求,没有及时送到服务器, 服务器实际上并没有收到, 那么C等待之后,没有响应会在重新发送 。服务器就收到了两个请求,服务器会分别应答。但是对于客户端来说,第一个是无效连接

    image

    四次挥手
    断开一个TCP连接时,需要客户端和服务端共发送4次确认才会真正的断开
    imageimage

    为什么是四次挥手

    TCP建立的是全双工通道,客户端发送断开请求后,服务器还是可以继续发送数据,当服务器确认断开后,才是真正的断开

    应用层
    应用层是最接近用户的一层

    应用程序收到”传输层”的数据,展示给用户之前需要进行解读。由于互联网是开放架构,数据来源五花八门,必须事先规定好格式,否则无法按照统一格式进行解读。”应用层”的作用,就是规定应用程序的数据格式

    不同的协议分别用于规定电子邮件、网页、文件传输数据的格式,例如smtp http ftp

    很多这样的协议共同构成了应用层

    image

    展开全文
  • socket网络通信

    2020-02-16 18:47:52
    文章目录1.网络通信的简介1.1 什么网络1.2 使用网络的目的1.3 小总结二、ip地址2.1 什么地址2.2 ip地址的作用2.3 ip地址的分类(了解即可)2.3.1 A类IP地址2.3.2 B类IP... 不同电脑上的进程之间如何通信3.2. 什...

    1.网络通信的简介

    1.1 什么是网络

    • 网络就是一种辅助双方或者多方能够连接在一起的工具
    • 如果没有网络可想单机的世界是多么的孤单

    1.2 使用网络的目的

    • 就是为了联通多方然后进行通信用的,即把数据从一方传递给另外一方

    • 前面的学习编写的程序都是单机的,即不能和其他电脑上的程序进行通信

    • 为了让在不同的电脑上运行的软件,之间能够互相传递数据,就需要借助网络的功能

    1.3 小总结

    • 使用网络能够把多方链接在一起,然后可以进行数据传递

    • 所谓的网络编程就是,让在不同的电脑上的软件能够进行数据传递,即进程之间的通信

    二、ip地址

    2.1 什么是地址

    • 地址就是用来标记地点的

    2.2 ip地址的作用

    • ip地址:用来在网络中标记一台电脑,比如192.168.1.1;在本地局域网上是唯一的。

    2.3 ip地址的分类(了解即可)

    • 每一个IP地址包括两部分:网络地址和主机地址
    • 2.3.1 A类IP地址

      • 一个A类IP地址由1字节的网络地址和3字节主机地址组成,网络地址的最高位必须是“0”,

      • 地址范围1.0.0.1-126.255.255.254

      • 二进制表示为:00000001 00000000 00000000 00000001 - 01111110 11111111 11111111 11111110

      • 可用的A类网络有126个,每个网络能容纳1677214个主机

    • 2.3.2 B类IP地址

      • 一个B类IP地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”,
      • 地址范围128.1.0.1-191.255.255.254
      • 二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110
      • 可用的B类网络有16384个,每个网络能容纳65534主机
    • 2.3.3 C类IP地址

      • 一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址的最高位必须是“110”

      • 范围192.0.1.1-223.255.255.254

      • 二进制表示为: 11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110

      • C类网络可达2097152个,每个网络能容纳254个主机

    • 2.3.4 D类地址用于多点广播

      • D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。
        它并不指向特定的网络,目前这一类地址被用在多点广播(Multicast)中
      • 多点广播地址用来一次寻址一组计算机 s 地址范围224.0.0.1-239.255.255.254
    • 2.3.5 E类IP地址

      • 以“1111”开始,为将来使用保留

      • E类地址保留,仅作实验和开发用

    • 2.3.6 私有ip

      • 在这么多网络IP中,国际规定有一部分IP地址是用于我们的局域网使用,也就
        是属于私网IP,不在公网中使用的,它们的范围是:
        10.0.0.0~10.255.255.255
        172.16.0.0~172.31.255.255
        192.168.0.0~192.168.255.255
    • 2.3.7 注意

      • IP地址127.0.0.1~127.255.255.255用于回路测试,
        如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1就可以测试本机中配置的Web服务器。

    3.socket简介

    • 3.1. 不同电脑上的进程之间如何通信

    首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!
    在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的。
    其实TCP/IP协议族已经帮我们解决了这个问题,网络层的“ip地址”可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用进程(进程)。
    这样利用ip地址,协议,端口就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互
    注意:
    所谓进程指的是:运行的程序以及运行时用到的资源这个整体称之为进程(在讲解多任务编程时进行详细讲解)
    所谓进程间通信指的是:运行的程序之间的数据共享
    后面课程中会详细说到,像网络层等知识,不要着急

    • 3.2. 什么是socket

      • socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:
      • 它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的

      • 例如我们每天浏览网页、QQ 聊天、收发 email 等等

    • 3.3. 创建socket

      • 在 Python 中 使用socket 模块的函数 socket 就可以完成:

      • import socket

      • socket.socket(AddressFamily, Type)

      • 说明:函数 socket.socket 创建一个 socket,该函数带有两个参数:

        • Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET
        • Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)
          创建一个tcp socket(tcp套接字)
    import socket
    
    # 创建tcp的套接字
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    # ...这里是使用套接字的功能(省略)...
    
    # 不用的时候,关闭套接字
    s.close()
    创建一个udp socket(udp套接字)
    
    
    说明
    套接字使用流程 与 文件的使用流程很类似
    创建套接字
    使用套接字收/发数据
    关闭套接字
    

    4.socket 与udp、tcp/ip的联系

    • 4.1 什么是TCP/IP、UDP?

      • 4.1.1TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。

      • 4.1.2 UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。

        这里有一张图,表明了这些协议的关系。图一

        TCP/IP协议族包括运输层、网络层、链路层。现在你知道TCP/IP与UDP的关系了吧。

    4.2 Socket是什么呢?

    • Socket在哪里呢?
      - 在上图中,我们没有看到Socket的影子,那么它到底在哪里呢?还是用图来说话,一目了然。
      - 在这里插入图片描述
      • Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
        你会使用它们吗?
      • 前人已经给我们做了好多的事了,网络间的通信也就简单了许多,但毕竟还是有挺多工作要做的。以前听到Socket编程,觉得它是比较高深的编程知识,但是只要弄清Socket编程的工作原理,神秘的面纱也就揭开了。
      • 一个生活中的场景。你要打电话给一个朋友,先拨号,朋友听到电话铃声后提起电话,这时你和你的朋友就建立起了连接,就可以讲话了。等交流结束,挂断电话结束此次交谈。 生活中的场景就解释了这工作原理,也许TCP/IP协议族就是诞生于生活中,这也不一定。
        在这里插入图片描述
        服务器端先初始化Socket,然后与端口绑定(bind),对端口进行监听(listen),调用accept阻塞,等待客户端连接。在这时如果有个客户端初始化一个Socket,然后连接服务器(connect),如果连接成功,这时客户端与服务器端的连接就建立了。客户端发送数据请求,服务器端接收请求并处理请求,然后把回应数据发送给客户端,客户端读取数据,最后关闭连接,一次交互结束。

    5.udp网络程序-发送、接收数据

    • 5.1. udp网络程序-发送数据

      创建一个基于udp的网络程序流程很简单,具体步骤如下:

      创建客户端套接字
      发送/接收数据
      关闭套接字

    在这里插入图片描述

    • 5.2. udp网络程序-发送、接收数据的代码

    #coding=utf-8
    
    from socket import *
    
    # 1. 创建udp套接字
    udp_socket = socket(AF_INET, SOCK_DGRAM)
    
    # 2. 准备接收方的地址
    dest_addr = ('192.168.236.129', 8080)
    
    # 3. 从键盘获取数据
    send_data = input("请输入要发送的数据:")
    
    # 4. 发送数据到指定的电脑上
    udp_socket.sendto(send_data.encode('utf-8'), dest_addr)
    
    # 5. 等待接收对方发送的数据
    recv_data = udp_socket.recvfrom(1024)  # 1024表示本次接收的最大字节数
    
    # 6. 显示对方发送的数据
    # 接收到的数据recv_data是一个元组
    # 第1个元素是对方发送的数据
    # 第2个元素是对方的ip和端口
    print(recv_data[0].decode('gbk'))
    print(recv_data[1])
    
    # 7. 关闭套接字
    udp_socket.close()
    
    • 5.3 python3编码转换

      在收发数据的过程中,是需要对收到的数据进行解码的
      decode(encoding=“utf-8”, errors=“strict”)编码
      encode(encoding=“utf-8”, errors=“strict”)解码
    • 5.4 udp绑定信息

      • 5.4.1udp网络程序-端口问题

        • 会变的端口号
        • 重新运行多次脚本,然后在“网络调试助手”中,看到的现象如下:
          -在这里插入图片描述
          • 每重新运行一次网络程序,上图中红圈中的数字,不一样的原因在于,这个数字标识这个网络程序,当重新运行时,如果没有确定到底用哪个,系统默认会随机分配
          • 记住一点:这个网络程序在运行的过程中,这个就唯一标识这个程序,所以如果其他电脑上的网络程序如果想要向此程序发送数据,那么就需要向这个数字(即端口)标识的程序发送即可
      • 5.4.2. udp绑定信息

        • <1>. 绑定信息
          一般情况下,在一台电脑上运行的网络程序有很多,为了不与其他的网络程序占用同一个端口号,往往在编程中,udp的端口号一般不绑定

        • 但是如果需要做成一个服务器端的程序的话,是需要绑定的,想想看这又是为什么呢?

        • 如果报警电话每天都在变,想必世界就会乱了,所以一般服务性的程序,往往需要一个固定的端口号,这就是所谓的端口绑定

        • <2>. 绑定示例

    #coding=utf-8
    
    from socket import *
    
    # 1. 创建套接字
    udp_socket = socket(AF_INET, SOCK_DGRAM)
    
    # 2. 绑定本地的相关信息,如果一个网络程序不绑定,则系统会随机分配
    local_addr = ('', 7788) #  ip地址和端口号,ip一般不用写,表示本机的任何一个ip
    udp_socket.bind(local_addr)
    
    # 3. 等待接收对方发送的数据
    recv_data = udp_socket.recvfrom(1024) #  1024表示本次接收的最大字节数
    
    # 4. 显示接收到的数据
    print(recv_data[0].decode('gbk'))
    
    # 5. 关闭套接字
    udp_socket.close()`- 
    
    • <3>. 总结
      一个udp网络程序,可以不绑定,此时操作系统会随机进行分配一个端口,如果重新运行此程序端口可能会发生变化
      一个udp网络程序,也可以绑定信息(ip地址,端口号),如果绑定成功,那么操作系统用这个端口号来进行区别收到的网络数据是否是此进程的
    • 贡献出我写的简易的udp聊天器
    import socket
    
    
    def send_msg(udp_socket):
        """获取键盘数据,并将其发送给对方"""
        # 1. 从键盘输入数据
        msg = input("\n请输入要发送的数据:")
        # 2. 输入对方的ip地址
        dest_ip = input("\n请输入对方的ip地址:")
        # 3. 输入对方的port
        dest_port = int(input("\n请输入对方的port:"))
        # 4. 发送数据
        udp_socket.sendto(msg.encode("utf-8"), (dest_ip, dest_port))
    
    
    def recv_msg(udp_socket):
        """接收数据并显示"""
        # 1. 接收数据
        recv_msg = udp_socket.recvfrom(1024)
        # 2. 解码
        recv_ip = recv_msg[1]
        recv_msg = recv_msg[0].decode("utf-8")
        # 3. 显示接收到的数据
        print(">>>%s:%s" % (str(recv_ip), recv_msg))
    
    
    def main():
        # 1. 创建套接字
        udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
        # 2. 绑定本地信息
        udp_socket.bind(("", 7890))
        while True:
            # 3. 选择功能
            print("="*30)
            print("1:发送消息")
            print("2:接收消息")
            print("="*30)
            op_num = input("请输入要操作的功能序号:")
    
            # 4. 根据选择调用相应的函数
            if op_num == "1":
                send_msg(udp_socket)
            elif op_num == "2":
                recv_msg(udp_socket)
            else:
                print("输入有误,请重新输入...")
    
    if __name__ == "__main__":
        main()`
    
    展开全文
  • 1. 不同电脑进程之间如何通信首要解决问题是如何唯一标识一个进程,否则通信无从谈起!在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通。其实TCP/IP协议族已经帮我们解决了这个...
  • 互联网是如何工作

    2018-12-10 21:53:50
    当两台电脑需要通信时,你必须连接他们,无论通过网线还是WIFI。...这时,所有的电脑都要链接到路由器进行通信。 路由器覆盖范围有限,所以我们还需要在不同路由器之间建立连接。 我们生活...
  • 在有线网络中,您可以清楚辨别哪台电脑...如果企业内部网络的安全措施不够严密,则完全有可能被窃听、浏览甚至操作电子邮 件。为了使授权电脑可以访问网络而非法用户无法截取网络通信,无线网络安全就显得至关重要。
  • 今日主要内容: ...互联网连接的电脑互相通信的是电信号, 互联网协议的功能: 定义计算机如何接入Internet ,以及接入Internet的计算机通信的标准. 1.2 osi七层协议 互联网协议按照功能不同分为osi...
  • 网络通信,IP地址, 端口,socket

    千次阅读 2019-05-23 18:34:34
    目录 1. 什么网络 2. 使用网络的目的 ip地址 1. 什么地址 2. ip地址的作用 ...查看或配置网卡信息:ifconfig ...1. 什么端口 ...1. 不同电脑上的进程之间如何通信 2. 什么socket 3.创建soc...
  • 指将地理位置不同的具有独立功能多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议管理和协调下,实现资源共享和信息传递计算机系统。 网络编程目的: 无线电台...
  • 什么计算机网络

    2020-01-02 19:56:04
    就是通过网络不同计算机上运行程序可以进行通信。 例如两台电脑qq通过网络进行相互聊天。 自从互联网诞生以来,现在基本上所有程序都是网络程序,很少有单机版程序了。 计算机网络就是把各个计算机连接...
  • 要实现标题所述的目标,我们首先要知道不同电脑上的进程之间是如何通信的,其实这个在上一篇文章已经讲解了,我这里再重述一遍:首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在1台电脑上可以通过进程...
  • 计算机通信

    2018-06-14 15:13:27
    任意两台电脑的网络地址放在一起比较,可以分为两种不同的情况:相同网段地址通讯不同网段地址通讯相同网段内通讯首先放几个名词解释:子网掩码:也叫网络掩码,用于屏蔽IP地址一部分以区别网络标识和主机标识,并...
  • 计算机诞生早期,每家电脑公司开发产品都具有其特殊性,不光机器硬件,连操作系统都自己编写,各自为营,要将一个程序在不同公司生产计算机上运行都天大难题,更惶论在不同计算机之间实现互联互通了。...
  • 计算机网络的性能指标 ...在计网中,带宽描述了网络的通信线路传送数据的能力,单位也b/s。也可以理解为,带宽越高,能传输的最高速率也越高 3. 吞吐量 表示在单位时间内通过网络(信道或者接口
  • 网络编程

    2016-05-05 10:04:21
    自从互联网诞生以来,现在基本上所有的程序都是网络程序...由于你的电脑上可能不止浏览器,还有QQ、Skype、Dropbox、邮件客户端等,不同的程序连接的别的计算机也会不同,所以,更确切地说,网络通信是两台计算机上的两
  • Linux网络编程——网络协议入门

    万次阅读 多人点赞 2015-03-13 16:19:35
    我们每天使用互联网,你是否想过,它是如何实现?全世界几十亿台电脑,连接在一起,两两通信。北京某一块网卡送出信号,深圳另一块网卡居然就收到了,两者实际上根本不知道对方物理位置,你不觉得这是很神奇...
  • 不同电脑进程之间如何通信 首要解决问题,如何唯一标识一个进程,你首先要知道自己谁,不然通信无从谈起! 在1台电脑上可以通过进程号(PD)来唯一标识一个进程·但是在网络中这行不通 其实TCP/IP协议族...
  • python udp通信详解

    2019-08-23 14:18:59
    1. 不同电脑进程之间如何通信 首要解决问题是如何唯一标识一个进程,否则通信无从谈起! 在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通。 其实TCP/IP协议族已经帮我们解决了...
  • 【Linux网络编程】网络协议入门

    千次阅读 多人点赞 2019-11-10 18:03:45
    我们每天使用互联网,你是否想过,它是如何实现? 全世界几十亿台电脑,连接在一起,两两通信。北京某一块网卡送出信号,深圳另一块网卡居然就收到了,两者实际上根本不知道对方物理位置,你不觉得这是很...
  • 1、不同电脑进程之间如何通信 ⾸要解决问题是如何唯⼀标识⼀个进程,否则通信⽆从谈起! 在1台电脑上可以通过进程号(PID)来唯⼀标识⼀个进程,但是在⽹络中这是⾏不通。 其实TCP/IP协议族已经帮我们解决了...
  • 不同电脑飞秋之间进行数据通信,它是如何保证把数据给飞秋而不是给其它软件呢? 其实,每运行一个网络程序都会有一个端口,想要给对应程序发送数据,找到对应端口即可。 端口效果图: 2. 什么是端口 端口是...
  • 1. 不同电脑进程之间如何通信首要解决问题是如何唯一标识一个进程,否则通信无从谈起!在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通。其实TCP/IP协议族已经帮我们解决了这...
  • 问题6-1:存在多种异构网络对不同网络之间的通信会造成一些麻烦。但为什么世界上还存在多种异构网络? 问题6-2:“IP网关”和“IP路由器”是否为同义语? 问题6-3:“互连网”和“互联网”有没有区别? 问题6-4:在...
  • 这时候就需要通信规则,不同的应用之间的通信,就需要需要不同的通信规则,需要多个应用进程之间的通信和协同工作来解决这个问题。 那应用层协议应该定义哪些内容呢? 1)应用进程交换报文类型,如:请求报文和...
  • 网络编程之socket

    2020-10-25 20:58:26
    网络编程之socket1 不同电脑上的进程之间如何通信2 什么 socket3 socket 的作用 1 不同电脑上的进程之间如何通信 首先通过 IP 地址找到网络中对应的电脑,然后通过传输协议和端口号来确定这个进程(运行起来的软件...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 296
精华内容 118
关键字:

不同网络的电脑是如何通信的