因对网络比较感兴趣,所以自学一下TCP/IP协议。
一、分层
TCP/IP是一组不同层次上协议的组合,通常认为TCP/IP是由四层协议构成的。一般分为以下四层:
1、链路层:即数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和网卡等硬件,一般用来处理与传输媒介的物理接口的事情。
2、网络层:处理数据分组在网络中的活动,例如分组在网络中传输时的选路等;
这一层的协议包括:IP协议即网际协议、ICMP协议及网络控制报文协议、IGMP协议即网间分组管理协议
3、传输层:主要是提供两台主机间的端到端通信;这一层主要包含两个重要的协议:TCP协议、UDP协议;
TCP协议即传输控制协议:提供可靠的数据通信;将数据划分成合适的数据块交给下面的网络层传递,并要求对方发送收到数据的确认信息,在接受到对方的确认信息后,向对方发送接收到确认信息的确认信,即建立连接时有三次握手规则;断开连接时四次挥手规则
UDP协议即用户数据协议:提供简单的数据通信,只需要提供对方主机的IP地址和端口号,即可发送数据,但是不能确定对方是否能够收到信息。
可靠性的传输必须使用TCP协议
4、应用层:负责处理特定的应用程序细节。这一层包含了:Telnet协议即远程登录、FTP协议即文件传输协议、SMTP协议即简单邮件传输协议、SNMP简单网络管理协议
理解这四层协议,可以借助现实生活中的例子:
例如以快递这个业务来说:
链路层就是各个城市以及网点间运输通道的连接、以及各种运输方式(陆海空,就陆运来说还有大小车)之间的交接,这可以对应网络中的网卡,而真个社会的交通制度可以类比操作系统的驱动层序,比如你要走高速,你得叫过路费,不交可以,你过不去;
网络层就是整个快递公司的网点,在实际的快递运输中,应该选择走哪些网点来运输物品;
传输层;就是整个快递公司运输的规章制度;TCP就好比挂号的快件、可靠值得信赖;UDP就好比普通快件,只管发,但是收件人是不是能收到,那就听天由命吧,尽管快递公司可能有赔偿,当然网络上UDP是没有赔偿的。
应用层:这就好比客户有特殊的需求,整个快递的过程除了要遵循以上几种协议,还要满足客户的需求,所以还可能另外要遵守某些约定,例如客户可能要求只能在节假日送货;
二、具体一下
怎样区别网络接口层和应用层呢?
对于应用层来说,应用层只关心应用层序的细节,而不是数据在网络中的传输活动;这就好比,没有几个客户会关心快递东西是走的空运还是陆运、是走的北京还是上海、是走的挂号件还是普通件,客户只关心能不能按时达到他们的要求。
而网络接口层就是可以说是整个数据传输中的物质基础,所谓的数据都太虚幻,看不见,摸不着,当然你想摸的话,估计电压高了还好,你还能有点感觉,一般你也感觉不到;但是网络接口层毕竟是整个网络的最实在的部分,硬件设备和操作系统的中驱动程序的好坏基本上会决定整个网络的传输性能;反应到社会上来,那就是整个社会交通系统的基础建设和具体的交通制度;
人们为什么需要网络呢?
想一想为什么要买卖吧,互通有无呗,本来计算机是孤立的,后来发现计算机之间的信息能够共享多好,于是有了局域网,后来又发现局域网似乎不能满足人们的需求,人们要求更多的资源,于是局域网联合起来形成了广域网,这大概就是今天互联网的由来;
那么互联网不同介质之间通过什么相连呢?
这就是路由器,所谓的路由器的作用就是将不同的主机连接在一起;它能够实现数据在不同传输介质或者不同网络之间的传输,想想这多么强大,能够实现数据的转换。
三、其他
1、网络层IP提供的服务并不可靠,这就好比快递运输中,网点至网点间的快件运输并不牢靠,可能会发生丢失现象;网络层IP总是尽可能选择较快捷的路径将数据包从源节点送到目的节点,这就好比因为快递公司为追求速度,负责快递转运的人只关心能否更快的运送快件,至于快件的安全性可能就顾不了那么多了;而TCP是在网络层IP的基础上提供可靠的传输,因此,TCP提供了超时重发、发送和接收都要确认的机制,这就好比挂号快件在运输过程中总是被关注,优先照顾,而且它的经过的地方要确认收到了挂号快件,所以更加的安全。
2、路由器至少有两个网络接口层,即每一个路由器都至少连接两个网络。
3、所谓的网关,现在表示应用层网关,是连接不同协议族的进程,它为某个特定的应用程序服务。
4、尽管IP协议提供的服务并不可靠,但是TCP和UDP都是吧IP协议作为网络层传输的主要协议。
5、ICMP协议:网络控制报文协议,可以看成是IP协议的补充,一般被网络层用来与其他主机或路由器交换错误报文和其他重要信息。
我们所熟知的两个流行的诊断工具就是使用ICMP协议:Ping和Traceroute
6、IGMP协议:Internet Group Manage Protocol网络分组管理协议,它用来吧一个UDP数据包多播到多个主机,我忽然想起来有些失物招领,将失物招领告示贴出去让大家知道,但是事实上某些特征不明显的失物有可能被某些人错领,不知道有没有这点意思,等着看后面的具体介绍吧。
7、ARP和RARP:ARP:Address Resolution Protocol地址解析协议RARP:Reverse Address Resolution Protocol逆地址解析协议;这两个协议用于将网络层IP地址和网络接口层地址相互转换;在现实生活中,这个东西就好比全国邮编大全,你想根据邮编找到某个地址,可以,想根据地址找到该地址的邮编,也可以。
四、互联网的地址
1、互联网上的每个接口必须拥有IP地址,IP地址占4个字节,长32个bit;
2、IP地址共分为5类,分别以A、B、C、D、E代替;A、B、C三类地址之间的不同之处在于网络号和主机号所占比特数不同
从高位到低位:
A类地址:0 (1位)+网络号(7位)+主机号(24位)
A类地址的最高位为0,后面为7为网络号,再后面为24位主机号,其实可以看成是一个字节的网络号和三个字节的主机号构成,只不过A类地址的网络号的最高位必须为0;
所以A类地址共有多少个子网络?算一下,可知共有127个子网络,因为全为0的主机号代表该子网络的网络地址,全为1的主机号代表该子网络的广播地址,所以每个子网络实际可用的主机号应该有16777214个主机号;那么A类地址共有多少个实际可用的主机号呢,恩,应该是2130706178个主机号
A类地址的起止地址为:0.0.0.0~127.255.255.255;
A类地址每个子网络的主机数目都很大,因此主要应用于大型网络
B类地址:10(共两位)+网络号(14位)+主机号(16位)
B类地址的最高两位为10,后面为14位网络号,再后面为16位主机号;其实可以看成是两个字节的网络号和两个字节的主机号构成,只不过B类地址的网络号的最高两位必须为10;
B类地址共有多少个子网络呢?2的14次方-1=16383个子网络,每个子网络的主机号数目为:2的16次方-2,=65534个主机号,减去2的原因和A类地址相同,都是由于全为0和全为1的主机号分别为该子网络的网络地址和广播地址;B类地址共有1073643522个可用主机号
B类地址的起止地址为:128.0.0.0~191.255.255.255
B类地址主要用于一些中型网络
C类地址:110(3位)+网络号(21位)+主机号(8位)
C类地址的最高3位为110,后面21位为网络号,再后面8位为主机号;其实可以看成3个字节的网络号和一个字节的主机号构成,只不过C类地址的网络号的最高3为必须为110;
C类地址共有多少个子网络呢?共有2的21次方-1=2097151个子网络;每个子网络有多少个主机号呢?共有2的8次方-2=254个,减去2的原因与A类地址相同,都是由于全为0的主机号即为该子网络的网络地址,全为1的主机号即为该子网络的广播地址;C类地址共有可用主机号为532676354个;
C类地址的起止地址为:192.0.0.0~223.255.255.255
D类地址:1110(4位)+多播组号(28位)
用作组播;
起止地址为:224.0.0.0~239.255.255.255
E类地址:11110(5位)+27位
保留号
起止地址为:240.255.255.255~255.255.255.255
若是按照用途来分,IP地址可分为3类:
单播地址:目的端为单个主机
广播地址:目的端为给定子网络内的所有主机
多播地址:目的端为同一组内所有主机
五、
1、域名系统:DNS:domain name system:提供主机名与IP地址之间的映射;我们平时上网查资料啥的,谁会总是记住点分十进制的IP地址,总是使用主机名进行查找,所以,域名系统就很有必要了。
2、封装:数据从应用层向网络接口层传递时,每传递一层,就会在数据前面加一个头信息,这就是所谓的封装。比方说,我们在用QQ聊天时,QQ软件可以看成是应用层软件,当使用QQ发送信息时,信息首先是在应用层添加一个应用层首部信息,然后向下传递到传输层,到传输层会再加一个传输层首部信息,然后由IP网络层发送信息时,会加上IP层首部信息,传递到网络接口层时,会加上该层首部信息,此时,处于网络接口层数据信息,就是所谓的数据帧。
每一层都会添加首部信息,一方面可以方便识别是哪一层的协议,同时又方便识别该层的哪一个协议,每一层都包含很多不同的协议。
3、frame就是上面说的数据帧,因为在以太网上传输,所以可以成为以太网数据帧,上面说的数据帧是有长度限制的,是在46~1500字节范围之内,所以大概这也是网络中一段完整的信息会被分成很多不同的数据段来传输,这些数据段就是数据包,就是packet了。在上面的传输层之中,信息可能由于发送信息类型的不同,所加的信息首部信息可能不同,如果是TCP信息,则加上TCP首部信息,如果是UDP信息,则加上UDP首部信息,当然,若是QQ的话,为了保密,当然是TCP类型的传输。
4、当我们传送信息时,要知道目的主机的IP地址,这个是必须的,不然我们往哪传信息呢,额,主机名大概也可以,毕竟有DNS嘛,这是我猜的,没查证,看后面怎么说了;
当然,我们传送的信息都是属于某一类信息,或者说是可以归为某一种协议,所以我们应该在指定IP的同时,指定协议的类型,这就好比在运送快递的时候,指定了运送目的地和运送方式,这样就齐了,那就传信息呗;这个所谓的协议的类型,用书上的话说就是端口号,每种协议的服务都有一个所谓的端口号,知道这个东西才能进行信息传递。
5、分用:上边将信息封装起来了,这里用的时候就得将信息分开,每层就会根据该层的首部信息进行数据分析;然后将信息发送到对应的上层进行处理。
6、端口号:使用16bits来表示端口号;这个端口号就是服务器的标志,这里的服务器可以是虚拟的服务器,如果操作系统是并发的,那么并发处理任务时,同时处理多个任务,在主机处理每个任务时所占有的软硬件资源集合起来就可以看成是一个服务器,这个也是我猜的,后面再看看对不对吧。这个端口号可以看成调用对应服务器的标志位。
知名端口号为:
FTP:21
TFTP:69
Telnet:23
服务器一般使用知名端口:1~1023之间;客户服务器一般使用临时端口:1024~5000
7、TCP/IP协议的应用程序通常采用两种应用编程接口:socket和TLI(运输层接口:Transport Layer Interface)