这是我参与8月更文挑战的第24天,活动详情查看: 8月更文挑战
网络编程其实很简单,就是计算机之间通过网络协议进行互相通信,也就是我们常说的套接字(Socket)编码。
网络编程三要素
IP地址
IP地址是分配给网络中每台机器的数字标识符,确定了设备在网络中的具体位置。IP地址分为ipv4和ipv6
- ipv4
- ipv4的地址位数为2的32次方,ipv4地址,为4段,地址表现形式为:
-- 二进制
01100011.10000000.00100010.00001001
-- 十进制
10.128.34.9
- ipv6
- ipv6的地址空间比ipv4的地址空间比较大,地址位数为2的128次方,是ipv4的4倍
- ipv6的地址格式与ipv4的不同,ipv6二进制为128位长度,以16位一组,每组用冒号分隔,可以分为8组,每组以4位十六进制方式表示,比如:
0e80:000d:1df4:2fg1:0029:9012:0000:8ae3
- ipv6也可以类似于点分十进制,ipv5也可以用的点十六进制写法,将8组4位十六进制地址的冒号去除,然后每位以点号分隔,例如上面冒号分隔的写法可以改为下面的写法:
0.e.8.0.0.0.0.d.1.d.f.4:2.f.g.1.0.0.2.9.9.0.1.2.0.0.0.0.8.a.e.3
- ipv6的特殊写法:
- 没想数字前的0可以省略,省略后如果仍是0则可以继续省略前面的0,例如上面的例子可以这样写:
0e80:000d:1df4:2fg1:0029:9012:0000:8ae3
--等价写法
e80:d:1df4:2fg1:29:9012::8ae3
- 上面的等价写法中0000直接被省略写成::,但是这种等价只能出现一次,下面这种写法就不行
0e80:000d:1df4:2fg1:0029:0000:0000:8ae3
不可以这样等价:
0e80:000d:1df4:2fg1:0029::8ae3
端口号
网络中通过IP找到了哪台计算机,想要找到计算机中运行的具体哪个应用,就需要通过端口号来查找,比较一台计算机运行的应用不只是一个。
计算机的端口取值为:065535,其中01023为系统级别的端口,一般我们自定义端口都使用1024以上的端口号,防止端口冲突。
网络协议
网络协议为计算机网络中进行数据交换而建立的规则、标准或约定的集合。【百度百科】,通俗点就是计算机之间交互约定的一种协议,比如http协议,smtp协议,ftp等各种想协议。
网络分层模式
七层及四层模式
设计到网络编程我们都会常说七层网络模型以及四层网络协议,哪么每一层都干了什么事呢?
OSI七层网络模型 | TCP/IP四层网络模型 | 各层网络协议 | 设备 |
---|---|---|---|
应用层 | 应用层 | HTTP,FTP,NFS,WAIS,TELNET,SMTP,DNS等 | 网关 |
表示层 | |||
会话层 | |||
传输层 | 传输层 | TCP、UDP | 四层交换机 |
网络层 | 网络层 | IP,ICMP,ARP,RARP,AKP,UUCP | 路由器、三层交换机 |
数据链路层 | 数据链路层 | FDDI,Ethernet,Arpanet,PDN,SLIP,PPP | 网桥,集线器,中继器,光纤,双绞线 |
物理层 | IEEE |
OSI七层网络模式只是理论上的分层方式,在实际中用的TCP/IP四层网路模型
各种协议
IP协议:网络互连协议
将多个包在网络中联系起来,传输数据包(不可靠传输),最基本功能就是寻址和分段功能,不 提供端到端,路由到路由的确认,不提供重发和流量控制。是计算机网络能够互相通信的基本规则,出错则像ICMP报告,ICMP在IP模块中实现
ICMP协议:面向无连接协议
用户传输错误报告控制信息(控制信息是指网络不通畅,主机是否到达,路由是否可用的这些网 络本身的消息,不涉及用户传输的数据)
ARP协议:地址解析协议
根据IP地址获取物理地址的协议(即MAC地址)。在同一子网内通过ARP协议可以实现数据包的 互相传递。不在一个子网内则无法获得MAC地址,只有通过网关去处理
RAPP协议:反转地址协议
将主机的物理地址转换成IP地址
BOOTP协议:引导程序协议
用于无盘工作站的局域网中,可以无盘工作站从一个中心服务器上获得IP地址。传输层:提供两台主机间端到端的通信
TCP协议:传输控制协议
主要用于网间传输的协议,分割处理报文并把结果包传到IP层,并接受处理IP曾传到的数据包
UDP协议:用户数据协议
主要用于需要在计算器之间传输数据的应用,将网络数据流量压缩成数据包
NET协议:网络地址转换协议
实现内网IP地址和公司地址之间的相互转换。将大量的内网IP转换成一个或者少量的公网IP
FTP协议:文件传输协议
通过FTP协议在FTP客户端访问FTP服务端,默认使用20和21端口,20用于传输数据,21用于传 输控制信息
HTTP协议:超文本协议
是用于从WWW服务端传输超文本到本地浏览器的传输协议。是客户端浏览器或其他程序与WEB 服务器之间的应用层通信协议
TELNET协议
Internet远程登录服务的标准协议和主要方式,为用户提供了在本地计算机上完成远程主机工 作的能力
SMTP协议:邮件传输协议
控制邮件传输的规则,以及邮件的中转方式
DNS协议:域名转换成IP地址
定义域名规则,将域名和IP相互映射