网络编程

OSI网络分层结构
问: 为什么要分层?
简化网络的操作
提供设备间兼容性和标准接口
促进标准化工作
结构上可以分离
易于实现和维护
总而言之:便于管理


OSI的七层结构
1.应用层
2.表示层(特定功能的实现)
3.会话层
4.传输层(贼重要)
5.网络层(贼重要)
6.数据链路层
7.物理层
前三层服务于用户,后面四层服务于传输。

对于传输层:1)、决定采用可靠或者不可靠的传输方式;tcp/udp
2)、错误的检测、流量控制
3)、确定所用端口号 (每个服务对应一个端口)

对于网络层:1)、提供逻辑地址(收件人和发件人的IP地址)
2)、选路 (路由)。

七层结构分化合理,但是缺点很明显,ISO制定的OSI参考模型的过于庞大、复杂。


TCP/IP协议
在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为主机到网络层。网络编程


主机到网络层
这层 主要为ARP协议 ,发送和接受网络数据报。在局域网中交换机记录局域网中所有计算机的物理地址,数据依靠Mac物理地址
ARP协议:将IP地址翻译为物理地址

arp -a 查询本机的缓存 Mac地址和ip;


网际互联层

主要解决主机到主机的通信问题
包含的协议:网际协议(IP)、互联网管理协议(IGMP)、互联网控制报文协议(ICMP)

ping命令:检查网络是否接通
eg:ping www.baidu.com(IP地址)


传输层
为应用层实体提供端口到端口的通信功能,保证数据报的顺序传输和数据报的完整性

包含的协议:
(1)、TCP(传输控制协议):它是一种可靠的 面向连接的协议。
服务包括:数据流传送、可靠性、有效流控、全双工操作和多路复用
(2)、UDP:它是一种不可靠的,面向无连接的协议。UDP不为IP提供可靠性、流控或差错恢复功能。
一般来说,TCP对应的是可靠性要求高的应用,而UDP对应的则是可靠性要求低、传输经济的应用。

TCP/IP的三次握手


应用层
主要为用户提供用户的各种服务

协议:FTP DNS SWTP等


IP协议
目的是提供子网的互联,形成较大的网络,使得不同的子网之间能传输数据

IP地址的分类
网络编程

对于A类地址,1.0.0.0–126.255.255.255
1和126代表的是A类子网网段.
B类地址,128.0和191.255代表的是B类子网网段.
C类地址,192.0.0和233.255.255代表的是C类子网网段.

最大网络数:看网段号 对于A类 地址前8位是网络标识,后24位位主机标识。2的7次幂个网段,等于128,即网段应该是0—127之间。而网络空间计算都必须“减2”,这是因为要扣除两个保留地址:二进制数里全是“0”和全是“1”的要保留。“0”做为网络号,“1”做为广播号。

最大主机数:对于A类 24位的主机标识,即2^24,扣除两个保留地址,2^24-2;


几种特殊的IP地址
1)私有地址
1.IP地址在全世界范围内唯一。
2. 私有地址可以自己组网时用,但不能在Internet网上用,Internet网没有这些地址的路由
3. 有这些地址的计算机要上网必须转换成为合法的IP地址,也称为公网地址
2)回送地址 (本机地址) 
A类网络地址127是一个保留地址,用于网络软件测试以及本地机进程间通信,叫做回送地址(loopback address)。无论什么程序,一旦使用回送地址发送数据,协议软件立即返回之,不进行任何网络传输。含网络号127的分组不能出现在任何网络上。
3)广播地址   
TCP/IP规定,主机号全为”1”的网络地址用于广播之用,叫做广播地址。所谓广播,指同时向同一子网所有主机发送报文。
4)网络地址   
TCP/IP协议规定,各位全为“0”的主机号被解释成”本”网络。
由上可以看出:   
(1)含网络号127的分组不能出现在任何网络上;   
(2)主机和网关不能为该地址广播任何寻径信息

这里写图片描述

子网掩码
C类:
网络编程

B类:
网络编程
A类
网络编程
IP和子网掩码必须要配合使用。