计算机网络基础(3)——TCP/IP模型各层的主要协议及其功能(一)

1.TCP/IP协议体系概述      

         TCP/IP是指传输控制协议/网际协议,是针对Internet开发的一种体系结构和协议标准,其目的在于解决异种计算机网络的通信问题,使得网络在互连时把技术细节隐藏起来,为用户提供一种通用、一致的通信服务。通常所说的TCP/IP协议实际上包含了大量的协议和应用,并且由多个独立定义的协议组合在一起。因此更确切地说,TCP/IP是一个协议族而不是一种协议。

       我们可以看出,TCP/IP模型与OSI七层模型之间在分层上的区别,TCP/IP模型没有表示层和会话层,网络层就是OSI参考模型的网络层,网络接口层相当于OSI参考模型中的物理层和数据链路层。但是无论是OSI参考模型还是TCP/IP模型都不是完美的,一般在学习网络时,会采取折中的方法,采用一种五层协议的结构,包括物理层,数据链路层,网络层,传输层和应用层。但是本文主要讲的还是TCP/IP模型。

2. 数据的传输单位:

我们听到过包,帧,数据包,段,消息,比特这六个词语来表达数据的传输单位,那么他们之间有什么区别呢?我们可以大致区分如下:

  •      包(packet)可以说是全能性术语
  •     帧(frame)用于表示数据链路层中包的单位
  •     数据包是 IP 和 UDP 等网络层以上的分层中包的单位
  •     段则表示 TCP 数据流中的信息
  •     消息(message)是指应用协议中数据的单位
  •     比特(比特)是指物理层的传输单位

       通过下面的图片,我们可以简单了解一下TCP/IP模型封装数据的过程,从应用层往下 ,每一层都加上各自的头部信息,在头部信息中包含了该层必要的信息,然后向下传输,从下一层的角度来看,从上一层收到的包都当做该层的数据。到网络接口层还要加上尾部信息,然后通过传输介质以及相应的中间设备传输到目的端,最后再逐层对封装好的数据进行解封。实现通信。

3. 数据的处理流程:

下图中以用户A向用户B发送邮件为例简单分析数据的处理流程:

1)应用程序处理

  •     首先应用程序会对要传输的数据进行编码处理,这些编码相当于 OSI 的表示层功能;编码转化后,邮件不一定马上被发送出去,这种何时建立通信连接、何时发送数据的管理功能,相当于 OSI 的会话层功能。

2)TCP 模块的处理

  •     TCP 根据应用的指示,负责建立连接、发送数据以及断开连接。TCP 提供将应用层发来的数据顺利发送至对目的端的可靠传输。为了实现这一功能,需要在应用层数据的前端附加一个 TCP 首部,包括源端口目的端口等信息。

3)IP 模块的处理

  •     IP 将 TCP 传过来的 TCP 首部和 TCP 数据合起来当做自己的数据,并在 TCP 首部的前端加上自己的 IP 首部。IP 包生成后,参考路由缓存表选择接受此 IP 包的路由或主机。

4)网络接口的处理

  •     从 IP 传过来的 IP 包对于网络接口层来说就是数据。给这些数据附加上链路层的首部并进行发送处理,生成的链路层数据包将通过物理层传输给接收端。

5)网络接口的处理

  •     主机收到以链路层的包后,首先从链路层首部找到 MAC 地址判断是否为发送给自己的包,若不是则丢弃数据。
  •     如果是发送给自己的包,则从链路层包首部中的类型确定数据类型,再传给相应的模块,如 IP、ARP 等。这里的例子则是 IP 。

6)IP 模块的处理

  •     IP 模块接收到数据后也做类似的处理。从包首部中判断此 IP 地址是否与自己的 IP 地址匹配,若不匹配则丢弃。如果匹配则根据首部的协议类型将数据发送给对应的模块,如 TCP、UDP。这里的例子则是 TCP。另外,对于有路由器的情况,接收端地址往往不是自己的地址,此时,需要借助路由缓存表,在调查应该送往的主机或路由器之后再进行转发数据。

7)TCP 模块的处理

  •     在 TCP 模块中,首先会计算一下校验和,判断数据是否被破坏。然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。数据被完整地接收以后,会传给由端口号识别的应用程序。

8)应用程序的处理

  •     接收端应用程序会直接接收发送端发送的数据。通过解析数据,展示相应的内容。

    注:TCP包关注端口号,接收到消息返回ACK信号;IP包关心目的IP地址,负责把包发送出去,但是并不关心目的主机是否收到。
 

4.TCP/IP各层的主要功能

接下来我们将自顶向下详细介绍各层的功能

1>应用层

应用层协议主要包括如下几个:FTP、TELNET、DNS、SMTP、NFS、HTTP。

  • 文件传输协议FTP(File Transfer Protocol),一般上传下载用FTP服务,数据端口是20H,控制端口是21H。
  • TELNET服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
  • 域名解析服务DNS(Domain Name Service),提供域名到IP地址之间的转换,使用端口53。
  • 简单邮件传输协议SMTP(Simple Mail Transfer Protocol),用来控制信件的发送、中转,使用端口25。
  • 网络文件系统NFS(Network File System),用于网络中不同主机间的文件共享。
  • 超文本传输协议HTTP(Hypertext Transfer Protocol),用于实现互联网中的WWW服务,使用端口80。

2>传输层

  • 分段及封装应用层送来的数据
  • 提供端到端的传输服务
  • 在发送主机与接收主机之间构建逻辑通信
  • 包括两个协议:TCP和UDP协议

TCP协议(Transmission Control Protocol,传输控制协议)

  • 面向连接:通讯双方交换数据之前必须建立连接
  • 可靠的:多种确保可靠性的机制
  • 字节流服务:8bit(1Byte)为最小单位构成的字节流

TCP协议(报文段格式)

 

  • 源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
  • 序号字段——占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
  • 确认号字段——占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
  • 首部长度——占 4 bit,它指出 TCP 首部共有多少个4字节,首部长度可以在20~60字节之间。因此,这个字段值可以在5(5X4=20)至15(15X5=60)之间。
  • 保留字段——占 6 bit,保留为今后使用,但目前应置为 0。
  • 紧急比特 URG —— 当 URG=1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。
  • 确认比特 ACK —— 只有当 ACK=1 时确认号字段才有效。当 ACK=0 时,确认号无效。
  • 推送比特 PSH (PuSH) —— 接收 TCP 收到推送比特置 1 的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。
  • 复位比特 RST (ReSeT) —— 当 RST=1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
  • 同步比特 SYN —— 同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文。
  • 终止比特 FIN (FINal) —— 用来释放一个连接。当FIN=1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
  • 窗口字段  —— 占  2  字节。窗口字段用来控制对方发送的数据量,单位为字节。 TCP  连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
  • 检验和 —— 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
  • 紧急指针字段 —— 占 16 bit。紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
  • 选项字段 —— 长度可变。TCP 只规定了一种选项,即最大报文段长度 MSS(Maximum Segment Size)。MSS 告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。
  • 填充字段 —— 这是为了使整个首部长度是 4 字节的整数倍。

点击可直接跳转:TCP协议中的三次握手和四次挥手

UDP协议(User Dategram Protocol,用户数据报协议)

1、UDP只在IP的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。

2、虽然UDP用户数据报只能提供不可靠的交付,但UDP在某些方面有其特殊的优点

  • 发送数据之前不需要建立连接
  • UDP的主机不需要维持复杂的连接状态表
  • UDP用户数据只有8个字节的首部开销
  • 网络出现的拥塞不会使源主机的发送速率降低,这对某些实时应用(如IP电话、视频会议)是很重要的。

3、UDP报文段头部信息分析:

用Wireshark抓取的头部信息如下:

 

  • 7
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编辑推荐 本书是网络构建原型——4.4BSD的建造者的倾力之作,《TCP/IP解析》的第1卷,主要讲述TCP/IP协议方面的内容。与其他的TCP/IP书藉的最大不同在于,本书不仅仅讲述了RFCS的标准协议,而且结合大量实例讲述了TCP/IP协议包的定义原因及在各种不同的操作系统(如Sunos4.1.3、Soloris2.2、AIX3.2.2)的应用与工作方式,这样可以以动态方式讲述TCP/IP的知识,使读者可以轻松掌握TCP/IP的知识:路由协议、寻址协议、组控制协议、简单邮件传输协议等。全书内容实用性强,是在校生学习TCP/IP知识的良师益友。 内容简介  《TCP/IP详解,卷1:协议》是一本完整而详细的TCP/IP协议指南。描述了属于每一的各个协议以及它们如何在不同操作系统运行。作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也适用于研究网络的技术人员。 作者简介 W.Richard Stevens(1951-1999)是一位非常受人尊敬的专家,除了《TCP/IP详解》三卷本外,他还有其他两部最为畅销的作品:《UNIX环境高级编程》和《UNIX网络编程》(两卷本)。 目录 译者序 前言 第1章 概述 1 1.1 引言 1 1.2 分 1 1.3 TCP/IP的分 4 1.4 互联网的地址 5 1.5 域名系统 6 1.6 封装 6 1.7 分用 8 1.8 客户-服务器模型 8 1.9 端口号 9 1.10 标准化过程 10 1.11 RFC 10 1.12 标准的简单服务 11 1.13 互联网 12 1.14 实现 12 1.15 应用编程接口 12 1.16 测试网络 13 1.17 小结 13 第2章 链路 15 2.1 引言 15 2.2 以太网和IEEE 802封装 15 2.3 尾部封装 17 2.4 SLIP:串行线路IP 17 2.5 压缩的SLIP 18 2.6 PPP:点对点协议 18 2.7 环回接口 20 2.8 最大传输单元MTU 21 2.9 路径MTU 21 2.10 串行线路吞吐量计算 21 2.11 小结 22 第3章 IP:网际协议 24 3.1 引言 24 3.2 IP首部 24 3.3 IP路由选择 27 3.4 子网寻址 30 3.5 子网掩码 32 3.6 特殊情况的IP地址 33 3.7 一个子网的例子 33 3.8 ifconfig命令 35 3.9 netstat命令 36 3.10 IP的未来 36 3.11 小结 37 第4章 ARP:地址解析协议 38 4.1 引言 38 4.2 一个例子 38 4.3 ARP高速缓存 40 4.4 ARP的分组格式 40 4.5 ARP举例 41 4.5.1 一般的例子 41 4.5.2 对不存在主机的ARP请求 42 4.5.3 ARP高速缓存超时设置 43 4.6 ARP代理 43 4.7 免费ARP 45 4.8 arp命令 45 4.9 小结 46 第5章 RARP:逆地址解析协议 47 5.1 引言 47 5.2 RARP的分组格式 47 5.3 RARP举例 47 5.4 RARP服务器的设计 48 5.4.1 作为用户进程的RARP服务器 49 5.4.2 每个网络有多个RARP服务器 49 5.5 小结 49 第6章 ICMP:Internet控制报文协议 50 6.1 引言 50 6.2 ICMP报文的类型 50 6.3 ICMP地址掩码请求与应答 52 6.4 ICMP时间戳请求与应答 53 6.4.1 举例 54 6.4.2 另一种方法 55 6.5 ICMP端口不可达差错 56 6.6 ICMP报文的4.4BSD处理 59 6.7 小结 60 第7章 Ping程序 61 7.1 引言 61 7.2 Ping程序 61 7.2.1 LAN输出 62 7.2.2 WAN输出 63 7.2.3 线路SLIP链接 64 7.2.4 拨号SLIP链路 65 7.3 IP记录路由选项 65 7.3.1 通常的例子 66 7.3.2 异常的输出 68 7.4 IP时间戳选项 69 7.5 小结 70 第8章 Traceroute程序 71 8.1 引言 71 8.2 Traceroute 程序的操作 71 8.3 局域网输出 72 8.4 广域网输出 75 8.5 IP源站选路选项 76 8.5.1 宽松的源站选路的traceroute程序示例 78 8.5.2 严格的源站选路的traceroute程序示例

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值