0.网络通信
通信/通讯的需要具备的两个基本条件:
1.物理媒介 物理层面
2.协议 软件层面
网络协议
1.网络协议层次模型
层次:把不同的功能封装成不同的功能模块 为什么叫层次
OSI七层模型
应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
TCP/IP四层模型 应用层 传输层 网络层 设备驱动和硬件
应用层
应用协议
QQ协议
ftp
http
DNS
BT
....
传输层 TCP UDP
解决数据如何传输的问题
协议 TCP UDP
TCP:(Transport Control Protocol)传输层控制协议
面向连接的传输层协议 它提供高可靠性的通信
(即数据无误 数据无丢失 数据无失序 数据无重复到达)的通信
=》重发机制
建立连接
三次握手 四次挥手
“面向连接”
UDP: User Datagram Protocol 用户数据报协议
它是一种不可靠的无连接协议,在数据发送前因为
不需要进行连接 所以可以进行高效率的数据传输
“实时应用”
网络层
数据要发给谁
IP <------ IP地址就是网卡的逻辑编号
ICMP
IGMP
设备驱动和硬件
硬件
网卡
网线
MAC 协议 : mac地址(网卡的物理地址 48bits)
2.网络数据是如何传输的?
分层传输
数据进行封装
拆包
3.教你如何做网吧老板
路由器 主要是路由
选择自己的数据包该发给谁
网关
两个及以上的网络的时候 决定数据要不要发出去
交换机
1.扩展网口
2.增强信号
猫 modern 调制解调器
将光纤信号进行解调
4.互联网地址(IP) 网段号 以及 主机号
互联网上的每个接口(网卡)都必须有一个唯一internet地址(IP地址)
IP地址是协议上的一个逻辑地址,进行网络通信时,
用这个Ip地址唯一标识一台主机(一个网卡)
Ipv4: 32bits
ipv6:64bits
IPV4地址有32个bit 那么怎么区分呢?
固定式电话 区号 + 电话号码
网络一样
网段号 以及 主机号
网段号:用来标识某个网段
在ip地址连续的高位
主机号:用来标识特定网段中的特定主机的
怎么标识IPV4中32bit的IP地址, 点分式字符串
每8个bits一个数字 中间用‘.’来分隔的字符串
1111 1111 1111 1111 0101 1010 1001 0011-》不是给人看的,给机器识别的
192.168.31.3
IP地址分类:
ip地址范围 私有地址范围
A 0网段号(7bit)主机号(24bits) 0.0.0.0~127.255.255.255 10.0.0.0~10.255.255.255
B 10网段号(14bit)主机号(16bit) 128.0.0.0~191.255.255.255 172.16.0.0~172.31.255.255C 110网段号(21bit)主机号(8bit) 192.0.0.0~223.255.255.255 192.168.0.0~192.168.255.255
D 1110多播组组号(28bits) 224.0.0.0~239.255.255.255
E 11110(留待后用) 240.0.0.0~247.255.255.255
在设置IP时 我们还可以指定这个地址的那些bit是网段号,那些比特是主机号
192.168.31.xxx
怎么设置呢?
netmask(子网掩码):
就是用来指定一个Ip地址中那些bits是网段号,那些比特是主机号
netmask为1的bit是网段号 为0比特是主机号
如
netmask 255.255.255.0
高三字节是网段号 低三字节是主机号
192.168.31.3
192.168.2.5 这两个IP不在一个网段
netmask 255.255.126.0 这个子网掩码合法吗?
1111 1111 1111 1111 0
非法的
netmask 255.255.252.0 这个子网掩码合法吗?
合法
ifconfig eth0 192.168.31.3 netmask 255.255.255.0 up
ip地址用来唯一标识网络上面的一台主机的
但问题是 我电脑又不是只有一个要上网的程序
我拿到的数据包 是哪个程序的数据呢?
5.端口号 IP地址+传输层协议(TCP/UDP)+端口号
TCP和UDP采用16bits的端口号来标识应用程序
TCP和UDP的端口号是独立的
从传输层的角度来说 我们应用分两类
TCP应用和UDP应用
=》一个主机上的网络程序的数据发给谁 由 IP地址+传输层协议(TCP/UDP)+端口号 确定的
端口号IANA管理
1-1023 已经约定好给那些程序/服务用的
ftp 21
http 80
.....
注册端口 1024~49151
动态或私有端口 49152~65535
6.网络字节序
大端模式与小端模式
大端模式 :高地址存低字节 低地址存高字节
小端模式 :低地址存低字节 高地址存高字节