网络编程1--基础理论讲解

【1】 IP分类

生活中最常见的IP192.168.1.31 这是一种  点分十进制 IP的表示方式!
换算成十六进制是:  C0A8011F   -->  4*8 = 32A B C 类:ip地址分类==网络号+主机号。
要求A类地址网络号前一位固定为 0 
要求B类地址网络号前两位位固定为 10
要求C类地址网络号前三位固定为 110
综上来分析--> 第一字节数据:
A0~126
B:128~191
C:192~223
是不是很有规律!!!哈哈,没有好好学习网络工程现在好难受啊!!

D类地址:多播地址。

E类地址保存。具体信息见下图。

在这里插入图片描述

		A类:
			第1字节为网络地址,其他3个字节为主机地址。第1字节的最高位固定为0;
			最小的AIP0.0.0.0
			最大的AIP127.255.255.255 
			在这其中:数字0127不作为主机的IP地址,数字127保留给内部回送函数,
					  数字0则表示该地址是本地宿主机,不能传送。 
			也即是:0.0.0.00.255.255.255是保留地址,用做表示所有的IP地址。
				  127.0.0.0127.255.255.255是保留地址,用做循环测试用的。
				  10.0.0.010.255.255.255是私有地址。
				  (所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址)。
		B类:
			前2个字节为网络地址,后两个字节为主机号,第一字节前两位固定为10;
			最小的BIP128.0.0.0
			最大的BIP191.255.255.255 
			
		C类:
		    前3个字节为网络地址,后1个字节为主机号,第一字节前3位固定为110;
			最小的CIP192.0.0.0
			最大的CIP223.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,64821亿)
	就B类地址 进行分析: 
	(网络地址)2^14=16384 (主机号)2^16==65536
	那么:16384 *65536=1,073,741,82410亿)
	就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组,如何划分?  
		(我想把这个局域网,划给四个部门-->研发,销售,行政,售后) 
		12IP地址:有网络号和主机号构成。
		3IP地址:
		子网掩码: (前面全是1,后面全是0255.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)
		子网范围:
			1192.168.1.1- 192.168.1.62
			2192.168.1.65-         126
			3192.168.1.129-        190
			4192.168.1.193-        254
		4个子网的IP是从1 - 2540 -255),并且这4类间不能直接通信的;
		
	问题:
	已知一个子网掩码号为255.255.255.192,问,最多可以连接多少台主机?
		62256 - 192 = 64  - 2 = 622^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协议族

	应用层:		TFTPHTTPSNMPFTPSMTPDNS,Telnet
	传输层:		TCPUDP 
	网络层:		IPICMPRIPOSPFBGPIGMP 
	网络接口与物理层:	SLIPCSLIPPPPARPRARPMTU ISO2110IEEE802.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)
	可以对较低层次协议如IPICMP直接访问。	

【6】端口号(vi /etc/services)

	为了区分一台主机接收到的数据包应该转交给哪个进程来进行处理,使用端口号来区别
	TCP端口号与UDP端口号独立
	端口号一般由IANA (Internet Assigned Numbers Authority) 管理
		众所周知端口:1~10231~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命令,其中LSBL代表小端存储	
		
	主机字节序转化网络字节序? 
	小端 转 大端 	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值