1. IP的组成与分类
IP最小可以由0.0.0.0一直到255.255.255.255,这些数字中还可以分为Net_ID(网络号码)和Host_ID(主机号码)两部分,以192.168.0.0到192.168.0.255为例:
192.168.0.0 ~ 192.168.0.255这个C类网址说明:
11000000.10101000.00000000.00000000
11000000.10101000.00000000.11111111
|---------------Net_ID----------------|-Host_ID-|
在同一个物理网段内,主机的IP具有相同的Net_ID,并具有独特的Host_ID,那么这些IP群就是同一个网络内的IP网段。
注:当所有的主机都是使用同一个网络设备链接在一起,这个时候这些主机在物理设备上其实是连接在一起的,那么就可以称这些主机在同一个物理网段内了。同一个物理网段内,可以依据不同的IP设置,而设置多个“IP网段”。
(1)Net_ID和Host_ID的限制
在同一个网段内,Net_ID是不变的,而Host_ID是不可重复的,并且HostID是不可同时为0或者同时为1的,因为全部为0表示整个网段的地址(NetWork IP),而全为1则表示为广播的地址(Broadcast IP)
(2)局域网内通过IP广播传递数据
在相同物理网段的主机如果使用相同的网络IP的范围(不可重复),则这些主机都可以通过CSMA/CD的功能直接在局域网中用广播进行网络的链接,即可以直接网卡对网卡传递数据(通过MAC数据帧)。
(3)不同局域网在相同的物理网段的情况
在同一个物理网段内,如果两个主机使用不同的IP网段地址,则由于广播地址的不同,导致无法通过广播的方式来进行连接,此时需要通过路由器(Router)来进行连接,才能将两个网络连接在一起。
(4)网络的大小
党Host_ID的占位越大,即Host_ID的数量越多时,表示同一个网络内可用以设定的主机的IP越多。
2. IP的分级
A类: 0.XX.XX.XX ~ 127.XX.XX.XX
B类:128.XX.XX.XX ~ 191.XX.XX.XX
C类:192.XX.XX.XX ~ 223.XX.XX.XX
D类:224.XX.XX.XX ~ 239.XX.XX.XX
E类:240.XX.XX.XX ~ 255.XX.XX.XX
3. IP的种类与获取方式
IPV4只有两种IP的类别,分别是:
Public IP:公共IP,有Inter NIC统一规划的IP,这种IP才能连上Internet。
Private IP:私有IP活保留IP,不能直接连上internet的IP,主要用于局域网络内的主机连接规划。
私有IP也分别在A,B,C三个Class中各保留一段作为私有IP网段,分别是:
ClassA: 10.0.0.0 ~ 10.255.255.255
ClassB:172.16.0.0 ~ 172.31.255.255
ClassC:192.168.0.0 ~ 192.168.255.255
以上三个网段是预留使用的,所以并不能作为internet上边的链接使用,只作为内部私有网络的IP使用,有以下几个限制:
(1)私有IP的路由信息不能对外散播
(2)使用私有IP地址作为源或目的地址的数据包,不能通过internet来传送
(3)关于私有IP的参考记录(如DNS),只限于内部网络使用。
特殊的Loopback IP网段 -----lo网络
lo网络最初是被用来测试操作系统内部循环所用的一个网络。如果机器上没装网卡,但是又想测试下设置的服务器是否可正常工作,这时就可以使用这个回环网络了。
IP的获取方式:
(1)直接手动配置 -----向ISP申请固定IP的链接环境
(2)通过拨号获取 ------向ISP申请注册获取账号密码,链接ISP,ISP会根据他们自己的设置让你的操作系统获取正确的网络参数
(3)自动获取网络参数(DHCP) -----局域网会有一台主机负责管理所有的计算机的网络参数,你的网络启动时会主动向服务器要求网络参数,获取后,本地主机会自行设定好网络参数。
不管是上边那种获取方式,获取到的都是私有IP,无法架设网站。
4. 子网掩码(NetMask),子网与CIDR
1. NetMask ------NetID全为1,HostID全为0
Class A,B,C的子网掩码表示如下:
Class A:255.0.0.0,占8位
Class B:255.255.0.0 占16位
Class C:255.255.255.0 占24位
Network IP ------HostID全为0,子网的第一个起始IP,不可用作主机IP地址
Broadcast IP ------HostID全为1,子网的最后一个末尾IP,不可用作主机IP地址
通常使用如下方法表示一个网络:
Network/NetMask
192.168.0.0/255.255.255.0
192.168.0.0/24 <<==因为NetID共有24位
5. 路由的概念
两个网段的数据无法通过广播的方式传递数据了,此时就需要通过IP的路径选择(routing)功能了。使用route命令查询当前主机路由信息。
不同网络的数据传输:
(1)查询IP数据包的目的IP地址
(2)查询目的IP地址是否位于本机所在网络的路由表中
(3)查询默认路由(Default Gateway)
源和目的地址不在同一网络,首先源主机会先分析是否有其他符合的路由设置值,如果没有,则将数据发给默认网关。
(4)送出数据包到Default gateway后,不理会数据包流向
6. IP与MAC:网络接口层的ARP和RARP协议
internet上数据传输主要通过IP传递,但是链路层实际传递数据是通过以太网,以太网传递数据主要是通过网卡卡号(MAC),当我们需要了解某个IP配置于哪张以太网网卡时,我们的主机会对整个局域网发出ARP数据包,对方收到数据包,会把他们的MAC地址返回给我们,这样就可以传递数据了,我们会把IP和MAC对应关系保存在ARP table中,可使用arp命令查询ip/mac对应关系。
7. ICMP协议
ICMP的全称是Internet Control Message Protocol,因特网信息控制协议。ICMP是一个错误的检测和报告的机制,最大的功能就是可以确保我们网络链接状态与链接的正确性。ICMP也是网络层的重要数据包之一,也是纳入到IP的数据包中,也就是说ICMP也是通过IP数据包进行数据传递的。ICMP主要是通过ping和traceroute命令来检测网络的状态。
8. TCP/IP传输层
TCP/IP | 相关通信协议 |
应用层 | HTTP,FTP,SMTP,POP3,NFS,SSH |
传输层 | TCP,UDP |
网络层 | IP,ICMP |
网络接口层 | LAN,WAN,ARP |
网络层的IP数据包只负责将数据送到正确的目标主机上去,但数据包会不会被正确接收,那就是传输层的任务了。
1. 面向连接的TCP协议
报头数据内容
(1)源端口与目的端口
(2)数据包序号(seq num) ----- TCP数据包过大时,大于IP数据包容许长度,就需要进行分段,这个数据包序号就是记录每个数据段的序号,以便数据接收端可以将TCP数据重组。
(3)回应序号(Ack num) -----当client收到这个确认码时,表示之前的数据包已经被正确的收下了。
(4)Data offset -----报文头中有个Options字段,这个字段的长度是非固定的,为了确认整个TCP数据包的大小,就需要这个标志来说明数据包字段的起始位置。
(5)Reserved ----保留字段
(6)Code(Control Flag)----- 包含6个bit
1)URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。
2)ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
3)PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用 程序,而不是在缓冲区排队。
4)RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请 求。
5)SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接 应答捎带一个确认,即SYN=1和ACK=1。
6)FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流
(7)Window(滑动窗口)
主要是控制数据包流量的,可以告诉对方目前本机的缓冲器(Receive Buffer)还可以接受数据包,当window=0时,代 表缓冲器已满,应该暂停传输数据。window的但是是byte。
(8)CheckSum(确认校验码)
数据发送前,会进行一个校验动作,并将校验值标注在这个字段上,接受者会对数据包再次进行验证,并比较校验 值, 符合的话,就接收,否则会认为数据损坏,要求发送端重发该数据。
(9)Urgent Pointer(紧急数据)
这个字段是在URG=1时才会产生作用,可以告知紧急数据的位置。
2. TCP的三次握手
A:数据包发起
当客户端想要对服务器连接时,就必须要发出一个要求链接的数据包,客户端随机选取一个大于1024的端口,然后在TCP的报文头中必须要带有SYN的主动链接(SYN=1),并记下发送链接数据包给服务器端的序号(SEQ NUM=10001)
B:数据包的接收和确认数据包传送
当服务器接到这个数据包,并且确定要接收这个数据包,就会开始制作一个同时包含SYN=1,ACK=1的数据包,其中的ack num时要给client确认用的,所以该数据会比A步骤里的seq num多一号(ack num=10001+1),我们服务器也必须确认客户端可以接收我们的数据包才行,所以也会发送一个seq num=20001的数据包给客户端,并且开始等待客户端给我们服务器端的响应。
C:回送确认数据包
当客户端收到服务端的ACK(10002)后,就能确认之前那个数据包被服务端正确接收了,接下来如果客户端也同意同服务端建立连接时,就会再次发送一个确认数据包ACK=1给服务器,也就是ack num=20002.
D:取得最后确认
在服务器收到带有ACK=1的且ack num=20002序号的数据包时,就能够建立起这次连接了。
3. 无连接的UDP协议
UDP的全称是User Datagram Protocol,即用户数据包协议。不提供可靠的传输模式,UDP传输过程中,接收端接收数据后,不会回复响应数据包给发送端,不需要进行三次握手,所以UDP传输较快,并且报头较少,所以可以携带更多的数据。
来源:CSDN
作者:愤世嫉俗2013
链接:https://blog.csdn.net/chen747936427/article/details/104290563