小白学网络之一_TCP/IP协议

           一直想学点网络方面的知识,21世纪,就是网络的世纪,互联的世纪,一直没有机会,因为之前的案子的关系,近段时间,一直不忙,正好有点时间,可以补点网络的基础,近期买了本TCPIP详解卷一,决定用这本书为引子,记录自己看这本书的点点滴滴,不求精通,只要求网络扫盲而已,起什么名字好了,想来想去,就叫小白学网络吧,因为自己在网路方面还真是小白,就这么招吧。


           学网络先学什么了,我也不知道,暂且按照书中的顺序来吧,先从协议开始。
      

           OSI(Open System Interconnection),开放式系统互联参考模型。从上到下,分别是:

           

      
           应用层
           表示层
           会话层
           传输层
           网络层
           数据链路层
           物理层
      
           这个是逻辑分层,有些时候,将一些层合并到一起,这里我们主要介绍跟协议相关的。
      
           TCP/IP协议栈,是一组不同层次上的多个协议的组合,主要由;
      
           链路层:有时也叫数据链路层或网络接口层,通常包括操作系统中的设备驱动和计算机中对应的网络接口
卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。


           网络层:有时也称为互联网层,处理分组在网路中的活动,例如分组的选路。在TCP/IP协议族中,网络层
协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)


           传输层:为两台主机提供上的应用程序提供端对端的通信。在TCP/IP协议族中,有两个互不相同的传输协议:TCP(传输控制协议)和UDP(用户数据报协议),TCP为两台主机提供高可信性的数据通讯,它所做的工作包括把
应用程序交给它的数据分为合适的小块交给下面的网络层,确认接收到的分组,设置发送最后确认分组的超时
时钟等。由于运输层提供了高可靠性的端到端的通信,因此应用层可以忽略所有这些细节。而另一方面,UDP则为
应用层提供了一种非常简单的服务。它只是把称作数据报的分组从一台主机发送到另一台主机,但并不保证该数据
报能到达另一端。任何必需的可靠性由应用层提供。


             应用层:负责处理特定的应用程序细节。几乎各种不同的TCP/IP实现都会提供通用的应用程序:
       
                Telnet 远程登录。
                FTP 文件传输协议
                SMTP 简单邮件传送协议

                SNMP 简单网络管理协议


              

                

             构造互联网最简单的方法是把两个或多个网络通过路由器进行连接。这些路由器也可叫做IP路由器。

             

       
             在TCP/IP协议族中,网路层IP提供的是一种不可靠地服务,也就是说,它只是尽可能快的把分组从源结点送到目的结点,但是不提供任何可靠性保证。在另一方面,TCP在不可靠地IP层上提供了一个可靠地运输层。


              连接网络的另一个途径是使用网桥,网桥是在链路层上对网络进行互联,而路由器则是在网络层对网路进行互联。网桥使得多个局域网(LAN)组合在一起,这样对上层来说就好像是一个局域网。

              

              


              ICMP(Internet互联网控制报文协议)是IP协议的附属协议,IP层用它来与其他主机或路由器交换错误报文和其他重要信息。IGMP(Internet组管理协议)。它用来把一个UDP数据报多播到多个主机。


              ARP(地址解析协议)和RARP(逆地址解析协议)是某些网络接口(如以太网和令牌环网)使用的特殊协议,用来转换IP层和网络接口层使用的地址。


              互联网的地址:
       

             互联网上的每个接口必须有一个唯一的Internet地址(也称为IP地址)。IP地址长为32bit.Internet地址并不采用平面形式的地址空间。IP地址具有一定的结构,五类不同的互联网地址格式如下:

             

              

               

              有三类IP地址:单播地址(目的端为单个主机),广播地址(目的端为给定网络上的所有主机)以及多播地址(目的端为同一组内的所有主机)
               
 
              域名系统:
       
              尽管通过IP地址可以识别主机上的网络接口,进而访问主机,但是人们最喜欢使用的还是主机名。在TCP/IP领域中,域名系统(DNS)是一个分布的数据库,由它来提供IP地址和主机名之间的映射信息。


              现在我们必须理解,任何应用程序都可以调用一个标准的库函数来查看给定名字的主机的IP地址。类似地,系统还提供一个逆函数,给定主机的IP地址,查看它说对应的主机名。


              封装:
       
             当应用程序用TCP传送数据时,数据被送入协议栈中,然后逐个通过每一层直到被当作一串比特流送入网络。其中每一层对收到的数据都要增加一些首部信息(有时还要增加尾部信息),该过程如下图所示,TCP传给IP的数据单元称作TCP报文段或简称为TCP段(TCP Segment)。IP传给网络接口层的数据单元称作IP数据报(IP datagram).通过以太网传输的比特流称作帧

(Frame).

              



             UDP数据与TCP数据基本一致。唯一的不同是UDP传给IP的信息单元称作UDP数据报(UDP datagram),而且UDP的首部长为8字节。
       
             由于TCP,UDP和ICMP和IGMP都要向IP传送数据,因此IP必须在生成的IP首部中加入某种标识,以表明数据属于哪一层。为此,
IP在首部中存入一个长度为8bit的数值,称为协议域。1表示ICMP协议,2表示IGMP协议,6表示为TCP协议,17表示UDP协议。


              类似地,许多应用程序都可以使用TCP或UDP来传输数据。运输层协议在生成报文首部时要存入一个应用程序的标识符。TCP
和UDP都用一个16bit的端口号来表示不同的应用程序。TCP和UDP把源端口号和目的端口号分别存入报文首部中。


               网络接口分别要发送和接收IP,ARP和RARP数据,因此也必须在以太网的帧首部中加入某种形式的标识,以指明生成数据的网络层协议。为此,以太网的帧首部也有一个16bit的帧类型域。


               以太网数据帧的物理特性是其长度必须在46到1500字节之间。
 
                分用:
       
                当目的主机接收到一个以太网数据帧时,数据就是开始从协议栈中由底向上升,同时去掉各层协议加上的报文首部。每层协议盒都要去检查报文首部中的协议标识,以确定接收数据的上层协议,这个过程叫做分用。


                为协议ICMP和IGMP定位一直是一件很棘手的事情。在上图中,把它们与IP放在同一层上,那是因为事实上,它们是IP的附属协议。
但是在这里,我们又把它们放在IP层的上面,这是因为ICMP和IGMP报文都封装在IP数据报中。


                 对于ARP和RARP,我们也遇到了同样的难题。在这里,把它们放在以太网设备驱动程序的上方,这是因为它们和IP数据报一样,都有各自的的以太网数据帧类型,我们后面又把ARP作为以太网设备驱动程序的一部分,放在IP层的下面,其原因在逻辑上市合理的。


                 端口号:
        
                 前面已经指出过,TCP和UDP采用16bit的端口号来识别应用程序。那么端口号是如何选择的呢?
        
                 服务器一般都是通过知名端口号来识别的。例如,对于每个TCP/IP实现来说,FTP服务器的TCP端口号都是21,每个Telnet服务器的TCP端口号都是23,每个TFTP(简单文件传送协议)服务器的UDP端口号都是69.任何TCP/IP实现所提供的服务都用知名的1到1023之间的端口号。这些
知名端口号都由Internet号分配机构(Internet Assigned Numbers Authority IANA)来管理。


                 到1992年为止,知名端口号介于1到255之间,256-1023之间的端口号通常都是由Unix系统占用,以提供一些特定的Unix服务-也就是说,提供一些只有Unix系统才有的,而其他操作系统可能不提供的服务。现在IANA管理1到1023之间所有的端口号。

                 Internet扩展服务与Unix特定服务之间的一个差别是Telnet和Rlogin。它们两者都允许通过计算机网络登录到其他主机上。Telnet是采用
端口号为23的TCP/IP标准且几乎都可以在所有操作系统上进行实现。相反,Rlogin最开始时只是为Unix系统设计的,因此在80年代初,它的知名端口
号是513.


                 客户端通常对它说使用的端口号并不关心,只需保证该端口号在本机上是唯一的就可以了。客户端口号又称作临时端口号。这是因为它通常
只是在用户运行该客户程序时才存在,而服务器则只要主机开着的,其服务就运行。


                 大多数TCP/IP实现给临时端口分配1024到5000之间的端口号。大于5000的端口号是为其他服务器预留的。
        
                 应用程序接口:
        
                 使用TCP/IP协议的应用程序通常采用两种应用程序编程接口:socket和TLI(运输层接口,Transport Layer Interface)
      
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值