网络编程基础

1 互联网的本质

硬件设备有了操作系统,然后装上软件之后我们就能够正常使用了,然后也只能自己使用。

像这样,每个人都拥有一台自己的机器,然而彼此孤立。

网络编程基础_第1张图片

如何才能和大家一起愉快的玩耍?

网络编程基础_第2张图片

什么是网络?

简单来说,网络就是一种辅助双方或者多方连接在一起的工具。

2 使用网络的目的

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

python开发基础阶段学习的编程都属于单机的,即不能和其他电脑的程序进行通信。

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

3 TCP/IP协议(网络通信协议)

  • 首先我们需要知道什么是协议?

  • 可以理解为一个规定,就像我们之前所说的国际通用的语言为英语。

网络编程基础_第3张图片

  • 那么类比到计算机领域,计算机网络沟通语言是什么?

  • 计算机都遵循的网络通信协议就叫做TCP/IP协议。

  • 历史:

  • 早期的计算机网络,各计算机厂商各自规定一套协议,比如IBM、Apple等都有各自的网络通信协议,互不兼容,谁也不服谁,导致只有相同品牌的计算机才能够进行通信交流。

  • 为了把世界上所有不同类型的计算机都连接起来,就必须规定一套全球通用的网络通信协议。

  • 为了实现互联网这个目标,互联网协议簇就随之发展而成,互联网协议簇就是通用协议标准。

  • 因为互联网协议包含了很多种协议标准,并不仅仅只是TCP和IP协议,只是这两个相对来说非常重要,所以互联网通信协议也就简称TCP/IP协议。

4 Ip地址的介绍

IP 地址就是标识网络中设备的一个地址。通过IP地址能够找到网络中某台设备。

网络编程基础_第4张图片

  • IP地址分为两类:IPv4和IPv6

  • IPv4 是目前使用的IP地址

  • IPv6 是未来使用的IP地址

  • IPv4 是由点分十进制组成

  • IPv6 是由冒号十六进制组成

查看IP地址

  • Linux 和 mac OS 使用ifconfig这个命令

  • Windows 使用ipconfig这个命令

通俗理解:

IP地址就好像电话号码(地址码):有了某人的电话号码,你就能与他通话了。同样,有了某台主机的IP地址,你就能与这台主机通信了,而且IP地址是唯一的。

IPv4地址的分类(每一个IP地址包括两部分:网络地址和主机地址)

网络编程基础_第5张图片

  • 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”开始,为将来使用保留(仅在实验室和开发用)

  • 注意

  • IP地址127.0.0.1---127.255.255.255用于回路测试

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

5 端口和端口号的介绍

  • 端口

  • 端口的作用就是给运行的应用程序提供传输数据的通道。

网络编程基础_第6张图片

  • 端口号

  • 操作系统为了统一管理这么多端口,就对端口进行了编号,这就是端口号,端口号其实就是一个数字,好比我们现实生活中的门牌号。

网络编程基础_第7张图片

  • 应用程序进行数据通信的流程

  • 首先通过IP地址找到对应的设备

  • 然后通过端口号找到对应的端口

  • 然后通过端口把数据传输给应用程序

  • 端口号的分类

  • 知名端口(0 - 1023)

  • 众所周知的端口号。

  • 这些端口固定分配给一些服务,比如21端口分配给FTP(文件传输协议)服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务。

  • 动态端口(1024 - 65535)

  • 一般程序员开发应用程序使用的端口号称为动态端口号。

  • 当运行一个程序默认会有一个端口号,当这个程序退出时,所占用的这个端口号就会被释放。

6 什么是Socket

  • Socket(简称套接字)是进程间通信的一种方式。

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

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

6.1 创建socket

python中使用socket模块的函数socket就可以完成。

该函数带有两个参数:

  1. adderss family:可以选择AF_INET(用于internet进程间通信)或者AF_UNIX(用于同一台机器进程间通信)

  1. 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)

6.2 udp介绍

udp是一种面向无连接的协议,每个数据报都是一个独立的信息,包括完整的源地址或和目的地址,它在网络上以任何可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。

  • 特点

  1. 无需建立链接,数据到达后也无需确认

  1. 不可靠交付

  • 适用场景

  • 通常用于可靠性较高的网络环境(局域网)或不要求可靠传输的场合

  • 也常用于客户机/服务器模式中。

  • 举例

  • 网络游戏

  • 直播

  • 音视频传输

6.3 tcp 介绍

tcp是一种面向连接的、可靠的、基于字节流的通讯协议。

  • 特点

  1. 面向连接,提供了可靠的建立连接和拆除连接的方法

  1. 可靠交付

  • 适用场景

  • TCP常用于不可靠的互联网中为应用程序提供面向连接的,可靠的,端到端字节流服务。

  • 举例

  • 远程控制

  • 邮件

  • 点对点文件传输

你可能感兴趣的:(web全栈开发,开发语言)