Linux C语言程序设计(十六)——TCP/IP协议基本解析

1、TCP/IP简介

1.1 协议简介

TCP/IP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。如下左边图示:


        两台计算机通过TCP/IP协议通讯的过程如上图右所示。传输层及其以下的机制由内核提供,应用层由用户进程提供(后面将介绍如何使用socket API编 写应用程序),应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上 时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation)。


        不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。数据封装成帧后发到传输介质上,到达目的主机后 每层协议再剥掉相应的首部,最后将应用层数据交给应用程序处理。

        在TCP/IP协议栈中,协议只有四层,实际上在链路层之下还有物理层,它指的是电信号的传递方式,比如现在以太网通用的网线、光纤等等。


1.2 协议通信

        上图对应两台计算机在同一网段中的情况,如果两台计算机在不同的网段中,那么数据从一台 计算机到另一台计算机传输过程中要经过一个或多个路由器,如下图所示:


        网络层的IP协议是构成Internet的基础。Internet上的主机通过IP地址来标识,Internet上有大量 路由器负责根据IP地址选择合适的路径转发数据包,数据包从Internet上的源主机到目的主机往 往要经过十多个路由器。路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在 不同的链路层接口之间转发数据包,因此路由器需要将进来的数据包拆掉网络层和链路层两层 首部并重新封装。IP 协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在 上层协议或应用程序中提供支持。

        网络层负责点到点(point-to-point)的传输(这里的“点”指主机或路由器),而传输层负责端到 端(end-to-end)的传输(这里的“端”指源主机和目的主机)。传输层可选择TCP或UDP协 议。TCP是一种面向连接的、可靠的协议;UDP协议不面向连接,也不保证可靠性。

        目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?整个过程如下图所示


        以太网驱动程序首先根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(payload, 指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报,然后交给相应的协 议处理。假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷 是TCP、UDP、ICMP还是IGMP,然后交给相应的协议处理。

        假如是TCP段 或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据 交给哪个用户进程。IP 地址是标识网络中不同主机的地址,而端口号就是同一台主机上标识不 同进程的地址,IP 地址和端口号合起来标识网络中唯一的进程。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值