网络编程
1.局域网和广域网
1.1局域网 (LAN)
局域网的缩写是LAN,local area network,顾名思义,是个本地的网络,只能实现小范围短距离的网络通信。我们的家庭网络是典型的局域网。电脑、手机、电视、智能音箱、智能插座都连在路由器上,可以互相通信。局域网,就像是小区里的道路,分支多,连接了很多栋楼。
1.2广域网 (WAN)
广域网(Wide Area Network)是相对局域网来讲的,局域网的传输距离比较近,只能是一个小范围的。如果需要长距离的传输,比如某大型企业,总部在北京,分公司在长沙,局域网是无法架设的。广域网,就像是大马路,分支可能少,但类型多,像国道、省道、高速、小道等,连接了很多大的局域网。
1.2.1光猫
光猫是一种类似于基带modem(数字调制解调器)的设备,和基带modem不同的是接入的是光纤专线,是光信号。用于广域网中光电信号的转换和接口协议的转换,接入路由器,是广域网接入。
1.2.2交换机和路由器
交换机(二层):用于局域网内网的数据转
路由器(三层):用于连接局域网和外网
IP地址
基本概念
●IP地址是Internet中主机的标识
●Internet中的主机要与别的机器通信必须具有一个IP地址
●IP地址为32位(IPv4)或者128位(IPv6)
●表示形式:常用点分十进制形式,如202.38.64.10,最后都会转换为一个32位的无符号整数。
五类:A B C D E
IP的划分
A类:7位网络号(网络号第一位,必须是0)+24位主机号
B类:14位网络号(网络号前两位,必须是10)+16位主机位
C类:21位网络号(网络号前三位,必须是110)+8位主机号
D类:1110+24位多播组号
E类:11110+27位(留有待于)
IP的范围
A类:1.0.0.1~126.255.255.254
B类:128.0.0.1~~191.255.255.254
C类:192.0.0.1~~223.255.255.254
D类(组播地址):224.0.0.1~~239.255.255.254j
E类:保留待用 11110
特殊地址
0.0.0.0:在服务器中,0.0.0.0指的是本机上的所有IPV4地址,如果一个主机有两个IP地址,192.168.1.1 和 10.1.2.1,并且该主机上的一个服务监听的地址是0.0.0.0,那么通过两个ip地址都能够访问该服务。
127.0.0.1:回环地址/环路地址,所有发往该类地址的数据包都应该被loop back。
NAT
地址转换的基本原理是在转发网络包时对 IP 头部中的 IP 地址和端口号进行改写
DCHP服务器(动态主机配置协议
● 功能:DHCP服务器的主要任务是自动分配IP地址、子网掩码、默认网关和DNS服务器ip等网络配置给网络中的设备(客户端),简化网络管理。
● 工作原理:
● 当一个设备(如电脑或手机)首次连接到网络时,它会发送一个DHCP请求。
● DHCP服务器接收到请求后,从预设的IP地址池中分配一个可用的IP地址,并返回给 客户端。
● 作用对象:DHCP服务器专注于局域网内部的IP地址管理。
NAT设备(网络地址转换)
● 功能:NAT设备的主要功能是将内部私有IP地址转换为公共IP地址,或反向操作,以便在局域网和外部网络(如互联网)之间进行通信。
● 工作原理:
● 当局域网内的设备访问互联网时,NAT设备记录设备的内部IP地址和源端口,并用公共IP地址替换。
● 响应的流量也会经过NAT设备,NAT通过记录的映射关系将数据包发送回正确的内部设备。
● 作用对象:NAT设备用于管理与外部网络(如互联网)的通信,通常作为路由器的一部分。
总结
● 职责不同:DHCP服务器主要负责IP地址的分配,而NAT设备负责地址转换和流量转发。
● 使用场景不同:DHCP通常在局域网内部使用,NAT则主要用于连接局域网与外部网络。
子网掩码
子网掩码的格式
与IP地址一样长的32位整数,有一连串的1,后面跟着一连串的0组成
作用
ip & 子网掩码 = 网络地址
ip & (~子网掩码)= 主机id
TCP和UDP
共同点:都是在传输层工作
TCP:是一种面向连接的传输层协议,它能提供高可靠性通信(即数据无误、数据无丢失、数据无失序、数据无重复到达的通信)
适用情况:
1、适合于对传输质量要求较高,以及传输大量数据的通信。
2、在需要可靠数据传输的场合,通常使用TCP协议。
3、MSN/QQ等即时通讯软件的用户登录账户管理相关的功能通常采用TCP协议。
缺点:发送量大,效率低。
UDP:是一种不可靠的无连接传输层协议,在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
适用情况:
1、发送小尺寸数据(如对DNS服务器进行IP地址查询时)。
2、在接收到数据,给出应答较困难的网络中使用UDP。
3、适合于广播/组播式通信中。
4、MSN/QQ/Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP协议。
5、流媒体、VOD、VoIP、IPTV等网络多媒体服务中通常采用UDP方式进行实时数据传输。
TCP编程
函数接口与步骤
服务器:
1、socket:建立套接字
2、bind:绑定自身IP和端口
3、listen:监听,变为被动状态
4、accept:形成阻塞,等待客户端请求连接
客户端:
1、socket:建立套接字
2、bind:绑定自身IP和端口
3、connect:向服务器发出链接请求
recv:读取数据
send:发送数据