目录
·网络通信的概念
·IP地址
·端口
·socket简介
前言
之前我们学习的函数,类,以及飞机大战都是在本地的,不能通过网络传输,后面学习的内容就是可以通过网络传输的。
另外最近更新的大都是以概念为主,内容相对比较枯燥,不过先学会概念,后续垒代码,理解的会更加的透彻一些。
最后温馨提示:自学不像以前读书时,有老师监督着。期间可能会有比较枯燥的章节,很多人会觉得没有必要看,不过我个人还是花一点点时间,多看看,活到老学到老
下面进入正题
一、网络通信的概念
1. 什么是网络
网络就是一种辅助双方或者多方能够连接在一起的工具
如果没有网络可想 单机的 世界是多么的孤独
2. 使用网络的目的
就是为了联通多方进行通信用的,即把数据从一方传递给另外一方
前面学习的编写程序都是单机的,既不能和其他的电脑上的程序进行通信
为了让在不同的电脑上运行的软件,之间能够互相传输数据,就需要借助网络的功能
小总结
·使用网络能够把多方连接在一起,然后进行数据传递
·所谓的网络编程就是,让不同的电脑上的软件能够进行数据传递,即进程之间的通信
二、IP地址
IP地址目的用来标记网络上的一台电脑,比如 192.168.1.1;在本地局域网上是唯一的
IP地址分类:
A类IP地址:
一个A类IP地址有1字节的网络和3字节主机地址组成,网络地址最高位必须是0
地址范围1.0.0.1 - 126.255.255.254
二进制表示为:00000001 00000000 00000001 - 011111110 11111111 11111111 11111110
可用的A类网络有126个,每个网络能够容纳1677214个主机
B类IP地址:
一个B类IP地址有2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是 10
地址范围 128.1.0.1 - 255.255.254
二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110
可用的B类网络有16384个,每个网络能容纳65534主机
C类IP地址:
一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址最高位必须是110
范围 192.0.2.2 - 223.255.255.254
二进制表示为:11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110
C类网络可达到2097152个,每个网络可以容纳254个主机
至于其他的D类,E类,以及私有IP地址,大家都可以上网搜到的,主要重点是了解C类
例子:
192.168.33.xx
前面192.168.33 前三组是用来标记网络号
后面的xx表示主机号(注:最小的数和最大的数不能使用:0和255,当主机号数量大于256之后,就可以把第三组33,当做成主机号,后面一次类推就行)
三、端口
端口可以比作一个房子的门,是出入这件房子的必经之路。再通俗一点,可以理解为端口就是要通过计算机接收信息软件的一个马甲,和IP地址是类似的,用于准确的传递信息给目标
如果一个程序需要收发网络数据,那么就需要有这样的端口
四、socket简介
1. 不同的电脑上的进程之间如何通信
首先解决的问题是如何唯一标识一个进程,否则通信无从说起
在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的
其实TCP/IP协议族已经帮我们解决了问题,网络层的IP地址,可以唯一标识网络中的主机,而传输层的协议+端口,可以唯一标识主机中的应用程序(进程)
这样利用IP地址,协议,端口就可以标识网络进程了,网络中的进程通信就可以利用这个标识与其他进程进行交互
注:
·所谓 进程 指的是:运行的程序以及运行时用到的资源这个整体称之为进程
·所谓的 进程间通信 指的是:运行程序之间的数据共享
·后面课程会详细说到,先做个了解
2. 什么是socket
Socket(简称 套接字)是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:
它能实现不同主机间的进程间通信,我们网络上各种各样的的服务大多都是基于socket来完成通信的(例如:QQ聊天,收发email,微信聊天等等)
3. 创建socket
在Python中,使用socket模块的函数socket就可以完成
说明:
函数socket.socket 创建一个socket,该函数带有两个参数:
·Address Family:可以使用AF_INET(用于Internet进程间通信)或者AF_UNIX(用于同一台机器进程之间通信),实际工作中常用AF_INET
·Type:套接字类型,可以使SOCK_STREAM(流式套接字,主要用于TCP协议)或者SOCK_DGRAM(数据报套接字,主要用于UDP协议)
语法:
import socket
# 创建TCP的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# ...这里使用套接字的功能。。。
# 不用的时候关闭套接字
s.close()
import socket
# 创建udp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# ...这里使用套接字的功能。。。
# 不用的时候关闭套接字
s.close()
套接字使用流程与文件的使用流程类似
·创建套接字
·使用套接字收/发数据
·关闭套接字
总结
可能有一些名词或者有很多的问题不是很理解,比如说我们平时用的IP地址:168.192.1.1、或者什么是TCP,等等这些问题,不用着急,后面都会慢慢的学习的。大家先了解这些概念,一步一步的学习,先学习基础,以后写代码,当码农更加快乐