408四大块之所以非常重要,很大一部分原因在于编程到实现以及传输的过程中,涉及很多原理性的东西。作为科班出身的学生,在学习过程中可能把科目单独学习了,没有串起来联合理解。恰逢春招,金三银四正式学习查缺好时光。这部分讲的是Python开发中的一些学习笔记,关于网络编程的基本概念。

博文关键词:IP地址、端口、socket

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化这篇博文主要包含课程红线部分。

目录

1.网络传输

2.IP地址

3.端口和端口号

4.socket


1.网络传输

首先是理解网络传输,网络的必要性可以结合线下单机的小霸王游戏啊,一些单主机的场景需求来理解。

为什么需要网络呢? 通信,交换数据,或者可以想象假如没有网络的情况。

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

老师用了一张图片说明,我们的编程,需要相互传递数据,不仅仅在局域网内,还要考虑到不同地域的特点。

可以从图片中看到,通过IP地址,来找寻访问目标主机(不管在不在同一片局域网下)。

所以,IP地址应运而生,用来标记电脑,可以说本地局域网中是唯一的,但在万维网上,会不会一样呢?如果出现这种情况,就会引起我们日常所说的“IP冲突”。

2.IP地址

为了避免冲突,最优的方式就是先制定规则,所以对于IP地址的分配,可以学习一下。

IP地址分两部分:网络地址 + 主机地址  : X.X.X.X

图中C类,列举的“192.168.1.1~254”是我们常用的类型范围。这里标注一下,为什么没有0和255?这两个主机号是不能用的。

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

对于A类IP地址来说,最高为“0”,网络地址(X-1字节-8位) + 主机地址(XXX-3字节-24位),可用126个,每个网络最多1677214主机

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

对于B类IP地址来说,最高为“10”,网络地址(XX-2字节-16位)+主机地址(XX-2字节-16位),可用16384个,每网络最多65534主机 

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

对于C类IP地址来说,最高为“110”,网络地址(XXX-3字节-24位)+主机地址(X-1字节-8位),可用2097152个,每网最多254

D类来说,用于多点广播(Multicast),第一个字节“1110”,是保留地址,用来寻址一组计算机,范围是224.0.0.1~239.255.255.254

E类用的不多,就不说了。

还有私有IP,拿来自己用就好了:10/172/192.0/16/168.0.0 ~ 10/172/192.255/31/168.255.255。

用来回环测试的IP地址是:172.0.0.1~172.255.255.255。

这里引入一个小知识,IPV4和IPV6的问题,V后面跟的数字就是版本号,现在多用V4,等到V4用完就需要用V6。原因是IPV6将32位的地址增加到128位,并不是XXXX→到XXXXXX的区别,还有更多的特性不同,在安全或更优传输上为了改进优化IPV4的一些问题。

说回自身电脑,我们如何能看到当前所使用主机的IP地址呢?

Windows有多种方法,可视化的和命令行的,这里为做对比,只演示命令行的:

打开命令行,输入“ipconfig”后回车:

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

而Linux系统来说,打开shell命令行界面,输入“ifconfig”后回车,也可以看到。

3.端口和端口号

那么传输的层面讲完,我们传达的信息,是如何找到进入的方式呢?比如我们使用QQ进行交流,IP地址只是标记了网中电脑的位置,怎么通过QQ找到我们的消息窗口,又发送给目标呢?这就涉及到进程问题,我们电脑中有很多程序,运行中的程序及运行时所需要的资源就叫进程,可以通过任务管理器来看到电脑中当前运行了哪些程序:

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

 那么主机接收到消息,该如何判断是送往哪个进程的呢?是通过什么方式得到,是否唯一?

答案是端口,端口用来标识我们进程占用的位置也好内存也罢,理解端口号和进程绑定,那么传输来的消息中,除了要有目标主机的IP地址外,还需要有端口号,对消息进行识别后找到对应的端口号,通过端口号传输给进程。也就完成了网络传输。

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

Linux系统中,端口号的范围:0 ~ 65535

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

知名端口:有 80  -  HTTP服务 |    21  -  FTP服务   |   <1024

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

4.socket

理解上面部分我们可以知道了网络传输的收发机制,接下来熟悉一下socket,说到这个,前两天代码跑出错,提示“套接字错误”还上网检索了很久。结果发现是端口冲突的问题,这里可以再全面学习一遍,以后尽量少踩网络有关的坑。

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

使用套接字,那么按照工具的常用规律,先用先建,用完再关。

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

函数的参数 协议簇,UDP/TCP,具体用法如下:

【Python编程学记】01 Python之网络编程 | Part 01 基本概念的普化

熟悉然后直接使用就行。下篇老师会带着一起做个小练习,更能理解这部分的作用。

一句!刻意练习,每日精进~

 

相关文章:

  • 2021-12-13
  • 2021-04-30
  • 2021-12-15
  • 2021-10-11
  • 2021-09-26
猜你喜欢
  • 2021-10-27
  • 2021-12-12
  • 2021-12-18
  • 2021-12-14
  • 2021-09-01
  • 2021-10-25
  • 2021-12-07
相关资源
相似解决方案