【1】 IP分类
生活中最常见的IP : 192.168 .1 .31 这是一种 点分十进制 IP 的表示方式!
换算成十六进制是: C0A8011F -- > 4 * 8 = 32 位
A B C 类:ip地址分类== 网络号+ 主机号。
要求A 类地址网络号前一位固定为 0
要求B 类地址网络号前两位位固定为 10
要求C 类地址网络号前三位固定为 110
综上来分析-- > 第一字节数据:
A :0 ~ 126
B : 128 ~ 191
C : 192 ~ 223
是不是很有规律!!!哈哈,没有好好学习网络工程现在好难受啊!!
D 类地址:多播地址。
E 类地址保存。具体信息见下图。
A 类:
第1 字节为网络地址,其他3 个字节为主机地址。第1 字节的最高位固定为0 ;
最小的A 类IP :0.0 .0 .0
最大的A 类IP :127.255 .255 .255
在这其中:数字0 和127 不作为主机的IP 地址,数字127 保留给内部回送函数,
数字0 则表示该地址是本地宿主机,不能传送。
也即是:0.0 .0 .0 到0.255 .255 .255 是保留地址,用做表示所有的IP 地址。
127.0 .0 .0 到127.255 .255 .255 是保留地址,用做循环测试用的。
10.0 .0 .0 到10.255 .255 .255 是私有地址。
(所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。
B 类:
前2 个字节为网络地址,后两个字节为主机号,第一字节前两位固定为10 ;
最小的B 类IP :128.0 .0 .0
最大的B 类IP :191.255 .255 .255
C 类:
前3 个字节为网络地址,后1 个字节为主机号,第一字节前3 位固定为110 ;
最小的C 类IP :192.0 .0 .0
最大的C 类IP :223.255 .255 .255
D 类: 224.0 .0 .0 - 239.255 .255 .255
E 类:保留
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
就A 类地址 进行分析:
( 网络地址) 2 ^ 7 = 128 ( 主机号) 2 ^ 24 == 16 , 777 , 216 ( 一千六百万)
那么:128 * 16777216 = 2 , 147 , 483 , 648 (21 亿)
就B 类地址 进行分析:
( 网络地址) 2 ^ 14 = 16384 ( 主机号) 2 ^ 16 == 65536
那么:16384 * 65536 = 1 , 073 , 741 , 824 (10 亿)
就C 类地址 进行分析:
( 网络地址) 2 ^ 21 = 2 , 097 , 152 ( 主机号) 2 ^ 8 == 256
那么:2 , 097 , 152 * 256 = 536 , 870 , 912
综上:A + B + C == 2 , 147 , 483 , 648 + 1 , 073 , 741 , 824 + 536 , 870 , 912 == 大约42 亿!!!
ABC 类地址最多可以划分为:42 亿 目前世界人口已经有70 ~ 80 亿。(每个人有多个ip, 包括物联网的兴起,越来越多的电子设备也需要IP , 显然不够用了啊!!!)
这样就引出了IP v4 和 IP v6的概念!!!
IPv4: 点分十进制IP
IPv6: 世界上的每一粒沙子都可以分配一个ip ( ~ ~ 手动滑稽😜~ ~ )
例如现在北京是一个局域网!! 网段是192.168 .1 . ~ 开始!!
那么:192.168 .1 .0 - 192.168 .1 .255 => 256 (除去首位!!)
( 最多可以连接主机的个数为254 ,除网络地址0 , 广播地址255 )
网络概念:
局域网可以理解为是一个小型网络;
若干个小型网络组合在一起可以组合成大型网络 => 以太网 Inetnet
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** *
想把192.168 .1 .0 该网段内IP 分成4组,如何划分?
( 我想把这个局域网,划给四个部门-- > 研发,销售,行政,售后)
1 )
2 级IP 地址:有网络号和主机号构成。
3 级IP 地址:
子网掩码: (前面全是1 ,后面全是0 )
255.255 .255 .0
1111 1111 1111 1111 1111 1111 0000 0000
网络号 主机号
2 )
引入子网号的概念
4 组: 00 01 10 11 => 2 ^ 2
修改子网掩码
1111 1111 1111 1111 1111 1111 1100 0000
255.255 .255 .192
3 )
子网范围:
1 : 192.168 .1 .1 - 192.168 .1 .62
2 : 192.168 .1 .65 - 126
3 : 192.168 .1 .129 - 190
4 : 192.168 .1 .193 - 254
4 个子网的IP 是从1 - 254 (0 - 255 ),并且这4 类间不能直接通信的;
问题:
已知一个子网掩码号为255.255 .255 .192 ,问,最多可以连接多少台主机?
62 台
256 - 192 = 64 - 2 = 62 台
2 ^ 6 = 64 - 2 = 62 台;
子网掩码:是一个32 位的整数,作用是将某一个IP 划分成网络地址和主机地址;
目的是合理的利用IP 资源;
A 类:
子网掩码: 255.0 .0 .0
B 类:
子网掩码: 255.255 .0 .0
C 类:
子网掩码: 255.255 .255 .0
【2】OSI模型
OSI 七层模型是最理想的模型
物理层:传输的是bit流,物理信号,没有格式
链路层:格式变为帧
网络层:路由器中是有算法的,ip,(主机到主机)
传输层:端口号,数据传输到具体那个进程程序 (端到端)
会话层:通信管理,负责建立或者断开通信连接
表示层:确保一个系统应用层发送的消息可以被另一个系统的应用层读取,编码转换,
数据解析,管理数据加密,解密;
应用层:指定特定应用的协议,文件传输,文件管理,电子邮件等。
【3】TCP/IP协议族
应用层: TFTP ,HTTP ,SNMP ,FTP ,SMTP ,DNS ,Telnet
传输层: TCP ,UDP
网络层: IP ,ICMP ,RIP ,OSPF ,BGP ,IGMP
网络接口与物理层: SLIP ,CSLIP ,PPP ,ARP ,RARP ,MTU ISO2110 ,
IEEE802 .1 , EEE802 .2
【4】UDP TCP 协议相同点
都存在于传输层
TCP : 面向连接,可靠
TCP (即传输控制协议):
是一种面向连接的传输层协议,它能提供高可靠性通信 ( 即数据无误、数据无丢失、
数据无失序、数据无重复到达的通信)
适用情况:
适合于对传输质量要求较高,以及传输大量数据的通信。
在需要可靠数据传输的场合,通常使用TCP 协议
MSN / QQ 等即时通讯软件的用户登录账户管理相关的功能通常采用TCP 协议
UDP : 无连接,不可靠
UDP (User Datagram Protocol)用户数据报协议,是不可靠的无连接的协议。
在数据发送前,因为不需要进行连接,所以可以进行高效率的数据传输。
适用情况:
发送小尺寸数据(如对DNS 服务器进行IP 地址查询时)
在接收到数据,给出应答较困难的网络中使用UDP 。(如:无线网络)
适合于广播/ 组播式通信中。
MSN / QQ / Skype等即时通讯软件的点对点文本通讯以及音视频通讯通常采用UDP 协议
流媒体、VOD 、VoIP、IPTV 等网络多媒体服务中通常采用UDP 方式进行实时数据传输
【5】Socket和socket类型
是一个编程接口;
返回一种特殊的文件描述符 ( everything in Unix is a file)
流式套接字 ( SOCK_STREAM ) TCP
提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复的发送且按发送顺序接收
内设置流量控制,避免数据流淹没慢的接收方。数据被看作是字节流,无长度限制。
数据报套接字 ( SOCK_DGRAM ) UDP
提供无连接服务。数据包以独立数据包的形式被发送,不提供无差错保证,
数据可能丢失或重复,顺序发送,可能乱序接收。
原始套接字 ( SOCK_RAW )
可以对较低层次协议如IP 、ICMP 直接访问。
【6】端口号(vi /etc/services)
为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区别
TCP 端口号与UDP 端口号独立
端口号一般由IANA ( Internet Assigned Numbers Authority) 管理
众所周知端口:1 ~ 1023 (1 ~ 255 之间为众所周知端口,256 ~ 1023 端口通常由
UNIX 系统占用)
已登记端口:1024 ~ 49151
动态或私有端口:49152 ~ 65535
一般使用:6666 8888 7777 9999 10000 10001
不同类型CPU 的主机中,内存存储多字节整数序列有两种方法,称为主机字节序 ( HBO ) :
小端序(little- endian) - 低序字节存储在低地址
将低字节存储在起始地址,称为“Little- Endian”字节序,Intel、AMD 等采用的是这种方式
大端序(big- endian)- 高序字节存储在低地址
将高字节存储在起始地址,称为“Big- Endian”字节序,由ARM 、Motorola等所采用
网络中传输的数据必须按网络字节序,即大端字节序
在大部分PC 机上,当应用进程将整数送入socket前,需要转化成网络字节序;
当应用进程从socket取出整数后,要转化成小端字节序)
如何检测字节序
方法一:使用指针
方法二:file命令,其中LSB 的L 代表小端存储
主机字节序转化网络字节序?
小端 转 大端