web网络编程基础(上)
网络编程基础(1)
一、互联网的本质
硬件设备有了操作系统,然后装上软件之后,我们就能够正常使用了,然后也只能自己使用。如下图,每个人都有一台自己的机器,然而彼此孤立。
如何进行联机交互呢?
这就谈到了互联网的本质:简单来说,网络就是一种辅助双方或者多方连接在一起的工具。
二、使用网络的目的
- 就是为了联通多方然后进行通信,即把数据从一方传递给另一方。
- python开发基础阶段学习的编程都属于单机的,即不能和其他电脑的程序进行通信。
- 为了让在不同的电脑上运行的软件之间能够相互传输数据,就需要借助网络的功能。
三、TCP/IP协议
什么是协议?
TCP/IP协议简单来说就是我们生活中所熟知的国际通用语言,如英语。在众多语言中,若各自选择自己的语言进行交流互通会阻碍互联网的发展,所以选择一种语言作为通信的标准,可以大大提高互联互通的效率。而在计算机领域的沟通语言就是TCP/IP协议。
-
-
早期的计算机网络,各计算机厂商各自规定一套协议,比如IBM、Apple等都有各自的网络通信协议,互不兼容,谁也不服谁,导致只有相同品牌的计算机才能够进行通信交流。
-
为了把世界上所有不同类型的计算机都连接起来,就必须规定一套全球通用的网络通信协议。
-
为了实现互联网这个目标,互联网协议簇就随之发展而成,互联网协议簇就是通用协议标准。
-
-
四、IP地址的介绍
IP 地址就是标识网络中设备的一个地址。通过IP地址能够找到网络中某台设备。
-
-
-
IPv6 是未来使用的IP地址
-
IPv4 是由点分十进制组成
-
IPv6 是由冒号十六进制组成
如何查看IP地址:
-
Linux 和 mac OS 使用
ifconfig
这个命令 -
Windows 使用
ipconfig
这个命令
通俗理解:
IP地址就好像电话号码(地址码):有了某人的电话号码,你就能与他通话了。同样,有了某台主机的IP地址,你就能与这台主机通信了,而且IP地址是唯一的。
IPv4地址的分类(每一个IP地址包括两部分:网络地址和主机地址)
-
A类地址
-
一个A类IP地址由1字节的网络地址的网络和3字节主机地址组成,网络地址的最高为必须是“0”
-
地址范围:1.0.0.1---126.255.255.254
-
可用的A类网络有126个,每个网络能容纳1677214个主机
-
-
B类地址
-
一个B类地址由2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是“10”
-
地址范围:128.1.0.1---191.255.255.254
-
可用的B类网络有16384个,每个网络能容纳65534主机
-
-
C类地址
-
一个C类IP地址由3字节的网络地址和1 个字节的主机地址组成,网络地址的最高位必须是“110”
-
地址范围:192.0.1.1---223.255.255.254
-
C类网络可达2097152个,每个网络能容纳254个主机
-
-
D类地址
-
D类IP地址第一个字节以“1110”开始,它是一个专门保留的地址。
-
它并不指向特定的网络,目前这一类地址被用在多点广播中
-
多点广播地址用来一次寻址一组计算机
-
-
E类地址
-
- 以“1111”开始,为将来使用保留(仅在实验室和开发用)
私网的简介
其次平常所见的网络分为公网和私网,私网地址只能在局域网中使用,不同的局域网可以使用同样的私网地址,但是私网地址是不能出现在互联网上的,那么私网地址如何访问互联网呢?
这就需要用到NAT地址转换,将内网地址映射到外网地址。通过NAT地址转换实现内网IP地址之间的相互转换,将大量的内网IP地址转换为一个或少量的公网IP地址,减少对公网IP地址的占用。
注意
-
IP地址127.0.0.1---127.255.255.255用于回路测试
-
如:127.0.0.1可以代表本机IP地址,用http://127.0.0.1就可以测试本机中配置的web服务器。
五、端口和端口号的介绍
1、端口
- 端口的作用就是给运行的应用程序提供传输数据的通道。
2、端口号
- 操作系统为了统一管理这么多端口,就对端口进行了编号,这就是端口号,端口号其实就是一个数字,好比我们现实生活中的门牌号。
-
-
首先通过IP地址找到对应的设备
-
然后通过端口号找到对应的端口
-
然后通过端口把数据传输给应用程序
-
-
端口号的分类
-
知名端口(0 - 1023)
-
众所周知的端口号。
-
这些端口固定分配给一些服务,比如21端口分配给FTP(文件传输协议)服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务。
-
-
动态端口(1024 - 65535)
-
一般程序员开发应用程序使用的端口号称为动态端口号。
-
-
-
六、Socket
1、什么是socket?
-
-
它能实现不同主机间的进程通信,我们网络上各种各样的服务大多是基于Socket来完成通信的。
-
python中使用socket模块的函数socket就可以完成。
该函数带有两个参数:
(1)adderss family:可以选择AF_INET(用于internet进程间通信)或者AF_UNIX(用于同一台机器进程间通信)。
(2)Type:套接字类型,可以是SOCK_STREAM(流式套接字,主要用于TCP协议)或者SOCK_DGRAM(数据报套接字,主要用于UDP协议)。
- 创建一个udp socket(udp套接字)
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
- 创建一个tcp socket(tcp套接字)
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
3、udp介绍
-
特点
-
无需建立链接,数据到达后也无需确认
-
不可靠交付
-
-
适用场景
-
通常用于可靠性较高的网络环境(局域网)或不要求可靠传输的场合
-
也常用于客户机/服务器模式中。
-
-
举例
-
网络游戏
-
直播
-
音视频传输
-
4、tcp介绍
tcp是一种面向连接的、可靠的、基于字节流的通讯协议。
-
特点
-
面向连接,提供了可靠的建立连接和拆除连接的方法
-
可靠交付
-
-
适用场景
-
TCP常用于不可靠的互联网中为应用程序提供面向连接的,可靠的,端到端字节流服务。
-
-
举例
-
远程控制
-
邮件
-
点对点文件传输
-
重点:
1、TCP和UDP之中,哪种类型的服务器接受连接,并将他们转换到独立的套接字进行客户端通信?
答:TCP。
2、什么是socket?
答:socket(简称套接字)是进程间通信的一种方式,能实现不同主机间的进程间的通信。
3、什么是IP地址?
答:IP地址就是标识网络中设备的一个地址。通过IP地址能够找到网络中某台设备。