zoukankan      html  css  js  c++  java
  • 网络通信

    主旨

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

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

    命令

    ping : 通常用来测试网络是否正常

    ifconfig : 在Linux操作系统下 ,会显示所有网卡的信息

    ipconfig : 在windows操作系统下,会显示所有网卡的信息

    netstat -an :查看端口状态

     

    端口

    网络技术中,端口有好几种意思。集线器交换机路由器的端口指的是连接其他网络设备接口

    这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。

    因为IP地址与网络服务的关系是一对多的关系,实际上是通过“IP地址+端口号”来区分不同的服务的。

    端口是通过端口号来标记的

    知名端口是众所周知的端口号,范围从0到1023

    动态端口的范围是从1024到65535

    端口就好比是敲门砖。

    访问谷歌的过程 (只是例子)

    需要一个交换机,然后联通路由器,会发现我一开始的MAC地址 是通过路由器的信息 要找dns服务器需要中转dns服务器,

    最后返回的ip地址是谷歌的IP地址     dns存放的域名和相应的IP地址        发送arp广播 获得默认网关的MAC地址,

    然后向dns 服务器 发送查询 www.google.com 对应的IP请求 如果dns 找到了www.google 对应的IP 会将这个IP地址返回请求方,

    也就是我本机,接下来会通过三次握手 链接 http服务器 链接成功会发送真正 的 http请求 ,得到www.google的主页内容

    http服务器接收到请求后,组织主页的内容数据,将内容返回到请求方的电脑。

    socket

    程序如果想通过网络进行收发数据,需要使用socket进行编程来实现

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

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

    例如: 发送邮件、QQ聊天等

     

    创建 socket

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

    import socket
    socket.socket(AddressFamily, Type)

    流程:

    • 创建套接字
    • 使用套接字收/发数据
    • 关闭套接字

    TCP/IP协议 (两套标准)


    MAC地址:在设备与设备之间数据通信时用来标记收发双方(网卡的序列号)
    IP地址:在逻辑上标记一台电脑,用来指引数据包的收发方向(相当于电脑的序列号)
    网络掩码:用来区分ip地址的网络号和主机号
    默认网关:当需要发送的数据包的目的ip不在本网段内时,就会发送给默认的一台电脑,成为网关
    集线器:已过时,用来连接多态电脑,缺点:每次收发数据都进行广播,网络会变的拥堵
    交换机:集线器的升级版,有学习功能知道需要发送给哪台设备,根据需要进行单播、广播
    路由器:连接多个不同的网段,让他们之间可以进行收发数据,每次收到数据后,ip不变,但是MAC地址会变化
    DNS:用来解析出IP(类似电话簿)
    http服务器:提供浏览器能够访问到的数据

     

    
    
  • 相关阅读:
    python super()函数
    java中的方法
    python的5大数据类型操作之列表篇
    java流程控制
    eval函数 exec函数 compile函数之间的应用
    基础语法
    java中对字符串的操作
    iOS 简单的文件写入
    iOS弹出窗口
    iOS block传值和属性传值
  • 原文地址:https://www.cnblogs.com/wy919/p/12668789.html
Copyright © 2011-2022 走看看