网络编程——1、协议基础,本篇。
网络编程——2、通信基础,点击此处。
网络编程——3、服务器基础,点击此处。
本篇包括网络编程概述、UDP简介、TFTP简介、TCP编程等。
目录
一、tcp/ip协议简介
tcp/ip不是两个协议,而是一个协议族,实际为4层,逻辑上可以为7层,如下图所示:
二、端口
为什么使用端口?只有ip地址时只知道发往哪个电脑而不知道发往哪个程序,端口用来辨识要发往的具体程序。
为什么不用PID辨识进程?因为进程是动态的,远端电脑可能不知道本地的pid号。
知名端口:大家都知道的约定好的端口,如80端口为HTTP服务,21端口为FTP服务,范围为0~1023。
动态端口:用户自己定义的端口,范围为1024~65535.
查看端口命令:netstat -an
注意:在同一个OS中,端口不允许相同,如果某个端口已经被使用了,那么在这个进程释放这个端口之前,其他进程不能使用这个端口。因为端口用来区分一个进程。
三、IP地址
用来逻辑上表示网络上的唯一一台电脑。
注意:一个电脑可以有多个网卡,即多个IP地址!
IP地址分类
其中网络号固定不变,表示位于同一网络中的电脑,主机号为当前网络中的电脑号。
主机号为0时表示网段号,主机号为255时为网关。
D类用于多播(不是广播),例如视频会议,只有一些人可以看到。
E类实验和开发用。
私有ip
用于局域网中,访问公网时不能使用,需要转换为公有ip访问外网。范围如下:
注意
IP地址127.0.0.1~127.255.255.255用于回路测试,即测试当前电脑tcp/ip协议能不能用,例如ping 127.0.0.1,即使拔掉网线也能ping得通。
四、MAC地址
网卡的序列号,形如XX:XX:XX:XX:XX:XX,六组十六进制数,前三组表示厂商序列号,后三组表示网卡序列号。
五、socket简介
socket:通过网络使进程间通信。
注意:一个进程可以有多个socket!
python测试程序如下: