网络通信

主旨

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

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

 

 

命令

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服务器:提供浏览器能够访问到的数据

 

 


posted @ 2020-04-09 19:30  .未央  阅读(163)  评论(0编辑  收藏  举报