1、IP地址
IPV4 ip地址由四个字节32位来表示,故最大地址个数为2^32,常用点分十进制方法来表示。
IPV6 ip地址由16个字节128位来表示,故最大地址个数为2^128。
IPV4 ip地址分为A类,B类,C类,D类,E类
A类IP地址范围从0.0.0.0到127.255.255.255,最高位以“0”开始,第一个字节为网络地址,剩余三个字节为主机地址,默认子网掩码为255.0.0.0,可用的A类网络有126个(全0和全1的网络地址用作特殊用途,故为128-2),每个网络能容纳1亿多个主机。A类地址适用于具有大量主机(直接个人用户)而局域网络个数较少的大型网络。
B类IP地址范围从128.0.0.0到191.255.255.255,高两位以“10”开始,前两个字节为网络地址,后两个字节为主机地址,默认子网掩码为255.255.0.0,可用的B类网络有16382个,每个网络能容纳6万多个主机 。
C类IP地址范围从192.0.0.0到223.255.255.255。高三位以“110”开始,前三个字节为网络地址,后一个字节为主机地址,默认子网掩码为255.255.255.0,C类网络可达209万余个,每个网络能容纳254个主机。
D类IP地址范围为224.0.0.0~239.255.255.255,高四位以“1110”开始,这一类地址被用在多点广播(Multicast)中。多点广播地址用来一次寻址一组计算机,它标识共享同一协议的一组计算机。
E类IP地址范围为240.0.0.0~247.255.255.255,高四位以“1111”开始,其为将来使用保留。
全零“0.0.0.0”地址对应于当前主机。全“1”的IP地址“255.255.255.255”是当前子网的广播地址。
2、端口号
端口号用来标明数据包应投递到哪个进程。一般为0—65525,其中1—255为知名端口号,如80为http服务端口号,21为FTP服务端口号;1024以下的端口号为系统预留端口。TCP端口号和UDP端口号相互独立。
3、子网掩码
子网掩码用来设置IP地址多少位用于子网号,多少位用于主机号,它是一个32位的值,为1的位标志网络号和子网号,为0的位标志主机号,如C类地址默认子网掩码为11111111 11111111 11111111 00000000,即255.255.255.0。
假设有一个C类地址,我们需要16个子网,则子网号应为4位,因为2^4 = 16,所以子网掩码应为11111111 11111111 11111111 11110000,即255.255.255.240,该IP地址结构:
---------------------------------------------------------
|高3位固定位|21位网络号|4位子网号|4位主机号|
---------------------------------------- ----------------
4、协议及OSI参考模型
协议是网络通信的标准、规则。
OSI参考模型将网络的不同功能划分为7层:
应用层:提供具体的通信服务。在这一层的协议有FTP、TFTP、HTTP、DNS、Telnet等。
表示层:规定数据的表现形式,包括数据的格式化、加密解密、压缩解压缩等。
会话层:建立和协调会话通信。
传输层:提供端到端的数据传输服务和管理,向高层屏蔽了下层协议,使网络应用与下层无关。这层协议有TCP、UDP。
网络层:提供IP寻址和路由。这层协议有IP、ICMP、IGMP等。
数据链路层:控制相连的通信设备之间的信号收发,建立无差错的传输路线。这层协议有Wi-Fi(IEEE802.11)、令牌环等。
物理层:提供物理连接,二进制传输。这层协议有以太网、调制解调器、双绞线等。
FTP为文件传输协议;TFTP为简单文件传输协议;HTTP为超文本传输协议;DNS为域名服务器,提供主机名和主机地址的转换;telnet为远程登录服务,可以利用其来检查TCP服务器是否可连,如telnet www.google.com 80;SMTP为简单邮件传输协议;POP3为邮局协议。
TCP协议是面向连接的可靠的传输协议:通信前必须建立一个TCP连接,数据被分割成合适大小,数据发送失败会重发,成功会得到确认等。
UDP协议是无连接的,不可靠的传输协议,但实时性较高。
IP为Internet网际协议;ICMP为Internet互联网控制报文协议;IGMP为Internet组管理协议。
ARP是地址解析协议,提供IP地址到硬件地址(mac地址)的动态映射;RARP是反向地址协议,提供硬件地址到IP地址的响应。
5、TCP的握手
在TCP层有个FLAGS字段,这个字段有以下几个标识:SYN, FIN, ACK, PSH, RST, URG
它们的含义是:
SYN表示建立连接,
FIN表示关闭连接,
ACK表示响应、确认,
PSH表示有 DATA数据传输,
RST表示连接重置。
其中,ACK是可能与SYN,FIN等同时使用的
建立TCP连接的三次握手:客户端调用connect()向服务器建立连接(发送SYN包),服务器收到后确认客户端的连接请求并向客户端建立连接(发送ACK+SYN包),客户端收到后确认服务器的连接请求(发送ACK包)
关闭TCP连接的四次握手:本端调用closesocket()关闭套接字(发送FIN包),对端收到后确认这个关闭(发送ACK包),对端调用closesocket()关闭套接字(发送FIN包),本端收到后确认这个关闭(发送ACK包)
6、TCP/IP模型
TCP/IP模型将网络分为四层:应用层、传输层、网络层、网络接口层。与OSI模型对应关系:
其中传输层又称运输层,网络接口层又称链路层。
参考:《VC++深入详解》