TCP/IP协议族体系以及结构主要协议

       TCP/IP协议族是四层协议系统,上层协议使用下层协议提供的服务。四层协议分别是链路层..网络层传输层.应用层。每一层的功能通过若干协议实现。如图中,是四层协议和若干协议。

 1.数据链路层

        数据链路层实现网卡接口的网络驱动程序,以处理数据在物理媒介上的传输。不同的物理网络具有不同的电器特性,网络驱动隐藏了这些细节,只提供一个接口(具体实现我们看不到)。

        两个常用的协议分为ARP协议和RARP协议。实现了IP地址和机器物理地址(通常是MAC地址,以太网,令牌环网和802.11无线网络都使用MAC地址)之间的相互转换。

        网络层使用IP地址寻址一台机器,而数据链路层使用物理地址寻址一台机器,因此网络层必须先将目标机器IP地址转化成其物理地址,才能使用数据链路层提供的服务,这就是ARP协议的用途。RARP协议仅用于网络上某些无盘工作站。因为缺乏存储设备,无盘工作站无法记住自己的IP地址,但它们可以利用网卡上的物理地址来向网络管理者查询自身的IP地址。运行RARP服务的网络管理者通常存有该网络存有该网络上所有机器的物理地址到IP地址的映射。

2.网络层

        网络层实现数据包的选路和转发。WAN(Wide Area Network),通常使用众多的分级的路由器来连接分散的主机或LAN(Local Area Network),因此,通信的两台主机一般不是直接相连的,二十通过多个中间结点(路由器)连接的。网络层的任务就是选择这些中间结点,使得在传输层和网络应用程序来看,通信的双方是直接相连的。

        网络层最核心的协议就是IP协议。IP协议根据数据包的目的来决定如何投递它。如果数据包不能直接发送给目标主句,那么IP协议就为它寻找一个合适的下一跳路由器,并将数据包交付给该路由器来转发。多次重复这一过程,数据包最终到达目标主句,或者由于发送失败而被丢弃。可见,IP协议使用逐跳的方式确定通信路径。

        网络层另外一个重要的协议是ICMP协议。是IP协议的重要补充,主要用于检测网络连接。ICMP协议使用的报文格式如图。

 八位类型字段用于区分报文类型。它将ICMP报文分为两大类:一类是差错报文,这类报文主要用来回应网络错误,比如目标不可到达和重定向;另一类是查询报文,这类报文用来查询网络信息,比如PING程序就是使用ICMP报文查看目标是否可以到达的。有的ICMP报文还使用8位代码字段来进一步细分不同的条件。比如重定向报文使用代码值0表示对网络重定向,代码值1表示对主机的重定向。ICMP报文使用16位校验和字段对整个报文进行循环冗余校验,以校验报文在传输过程中是否损坏。不同的ICMP报文类型有不同的正文内容。

        ICMP协议并非严格意义上的网络层协议,因为它位IP协议提供服务(而一般只有下层协议为上层协议提供服务)

3.传输层

        传输层为两台主机上的应用程序提供端到端的通信。与网络层使用的逐跳通信方式不同,传输层只关心通信的起始端和目的端,而不在乎数据包的中转过程。如图:

         途中垂直的实线箭头表示TCP/IP协议族之间的尸体通信,水平的箭头表示逻辑通信线路。途中还有不同物理网络的连接方法。可见,数据链路层封装了物理网络的电器细节;网络层封装了网络连接的细节;传输层为应用程序封装了一条端到端的逻辑通信链路,负责数据的收发,链路和超时重传等。

        传输层协议主要有三个:TCP协议,UDP协议和SCTP协议

        TCP协议是可靠的,面向连接的基于流(stream)的服务。有超时重传,数据确认等方式来确保数据包正确发送到目的端,因此TCP协议是可靠的。使用TCP协议的双方必须先建立TCP连接,并在内核中为该连接维持一些必要的数据结构,比如连接的状态,读写缓冲区以及诸多的定时器等。通信结束后,双方必须关闭连接以释放这些内核数据。以字节读出。

        UDP是面向非链接的,没有超时重传和数据确认机制。应用程序每次发送数据都要明确指定接收端的地址。接收端必须以该长度为最小单位将其所有内容一次性读出,否则数据被截断。

        SCTP协议是一种相对较新的传输层协议,是为了在Internet上传输电话信号而设计的。

4.应用层

        应用层负责处理应用程序的逻辑。数据链路层、网络层和传输层负责处理网络通信细
节,这部分必须既稳定又高效,因此它们都在内核空间中实现,如图1-1所示。而应用层则
在用户空间实现,因为它负责处理众多逻辑,比如文件传输、名称查询和网络管理等。如果
应用层也在内核中实现,则会使内核变得非常庞大。当然,也有少数服务器程序是在内核中
实现的,这样代码就无须在用户空间和内核空间来回切换(主要是数据的复制),极大地提
高了工作效率。不过这种代码实现起来较复杂,不够灵活,且不便于移植。本书只讨论用户
空间的网络编程。
        应用层协议很多:

        ping是应用程序,而不是协议,前面说过它利用ICMP报文检测网络连接,是调试网络环境的必备工具。
        telnet协议是一种远程登录协议,它使我们能在本地完成远程任务,本书后续章节将会
多次使用telnet客户端登录到其他服务上。
        OSPF(Open Shortest Path First,,开放最短路径优先)协议是一种动态路由更新协议,用
于路由器之间的通信,以告知对方各自的路由信息。
        DNS(Domain Name Service,域名服务)协议提供机器域名到IP地址的转换,我们将
在后面简要介绍DNS协议。
        应用层协议(或程序)可能跳过传输层直接使用网络层提供的服务,比如pig程序和
OSPF协议。应用层协议(或程序)通常既可以使用TCP服务,又可以使用UDP服务,比
如DNS协议。我们可以通过etc/services文件查看所有知名的应用层协议,以及它们都能使

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值