原创 TCP/IP传输协议概述

2010-12-31 11:53 4704 17 31 分类: 消费电子

TCP/IP网络是如何通讯的

在使用TCP/IP协议通信的网络中,可以形象地理解为有两个信封,TCP和IP就是信封。待传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将 TCP信封塞入IP大信封,发送上网。在接收端,一个TCP软件包接收信封,抽出数据,按发送前的顺序将信息还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在网络中几乎可以无差错地传送数据。

但是这些信是如何到达目的地的呢?

我们来打个比方:以下图为例,小K住在村1的H1中,村里有个邮局H0。现在小K有两封信分别要给住在村1的H3和村2的H1中的人。

tu1.jpg



操作的步骤如下:

小K首先在信封上都标注收信人的地址。第一封信的地址是:村1.H3;第二封信的地址是:村2.H2。

然后,小K比较了一下第一封的地址和自己的地址,发现第一封信的收信人和自己在一个村,所以最简单和经济的办法就是自己送去。

接下来,小K比较了一下第二封的地址和自己的地址,发现第二封信的收信人和自己不在一个村,甚至自己也不知道如何到达那里,所以小K只好把信送到邮局,由邮局来送这封信。

信总算送出去了。现在我们来总结一下这个过程需要哪些要素。

首先需要一个地址,这个地址包括两部分:一是你是哪个村的,二是你住在村里的哪个屋子里。

其次需要邮局来送的不是同一个村的信,因为同一个村的信是不需要通过邮局的。

在使用TCP/IP协议通信的网络中,这个地址就是“IP地址”,IP地址分为网络号和主机号两部分,由四段1-255的数字组成。网络号就相当于地址中标明是哪个村的部分,一个村的网络号是相同的,一个网络号代表一个“子网”。主机号就相当于地址中标明是哪座房子的部分。然而,在IP地址中并没有明确规定哪个部分是网络号,哪个部分是主机号,还需要“子网掩码”来进行区分。网络中的每台计算机都有自己的IP地址,这个地址不能重复。

邮局就是实现路由功能的路由器,它知道如何把数据发送到其他子网上。路由器和网络上的其他计算机一样有自己的IP地址。当计算机发现要发送数据的目的地和自己不在同一个子网内时,就把数据发到路由器。为了使同一个子网内的计算机识别出路由器,需要在计算机上配置一下,告诉计算机路由器的IP地址,这个地址在操作系统中称为“GateWay(网关)”。

TCP/IP 的分层结构:

TCP/IP(Transmission Control Protocol/Internet Protocol)已成为一个事实上的工业标准。

TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层)。TCP和IP是TCP/IP协议簇的中间两层,是整个协议簇的核心,起到了承上启下的作用。

1、接口层

TCP/IP的最低层是接口层,常见的接口层协议有:Ethernet 802.3、Token Ring 802.5、X.25、Frame reley、HDLC、PPP等。

2、网络层

网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。

IP是网络层的核心,通过路由选择将下一跳IP封装后交给接口层。IP数据报是无连接服务。

ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。

ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。

RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站和DHCP服务。

3、传输层

传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram rotocol)。

TCP是面向连接的通信协议,通过三次握手建立连接,通讯时完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。

UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求在程序员编程验证。

4、应用层

应用层一般是面向用户的服务。如FTP、TELNET、DNS、SMTP、POP3。

FTP(File Transmision Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。

Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。

DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换。

SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转。

POP3(Post Office Protocol 3)是邮局协议第3版本,用于接收邮件。

数据格式:

数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)

IP数据包:IP头部+TCP数据信息 (IP头包括源和目标主机IP地址、类型、生存期等)

TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)

PARTNER CONTENT

文章评论14条评论)

登录后参与讨论

用户1670895 2013-5-27 18:32

谢谢,刚开始的例子用的很恰当

用户1602177 2013-5-22 14:37

“安全第一”~~

用户1406868 2013-5-21 08:47

test

用户1613976 2012-6-6 16:33

好,易懂

用户1582797 2011-6-16 22:34

谢谢

用户1245680 2011-4-29 07:46

比喻非常恰当,非常形象,很好

用户1455337 2011-4-12 20:26

比较清晰。多谢分享。 关于UDP传输的不可靠性怎么理解,怎么应对?

用户1547524 2011-1-18 16:19

比喻恰当!

用户1578145 2011-1-8 23:16

thx~~~~~~~~~~~~~~~~~~~

用户1170725 2011-1-5 16:16

总结的很好,再详细点就更好了
相关推荐阅读
用户1587532 2012-12-04 14:56
被忽略的硬件常识
          在特权同学的《都是IO弱上拉惹的祸》一文中,提及了Altera的CPLD在初始化时管脚通常会处于弱上拉状态。在实际示波器采样来看,就表现在上电初 期IO脚会有一个短暂(当时是持...
用户1587532 2012-12-04 14:56
都是IO弱上拉惹的祸
         开发的一款液晶驱动器,接收MCU过来的指令和数据进行图像显示。使用了一片可编程(带使能和PWM调节控制)的背光芯片。在CPLD设计中,上电复位状态将背光使能拉低(关闭),直到MC...
用户1587532 2011-12-29 09:39
四通道波形动态演示效果
 ">http:// http://v.youku.com/v_show/id_XMzM3MDY2NjYw.html   这效果,Cortex-M3可以吗?     ...
用户1587532 2011-12-21 12:54
高速绘图显示,还是FPGA给力
  示波器的效果,曾经以为难于上青天,殊不知咱用FPGA一样能够轻松效仿。目前只是单通道的显示效果,随后送上4通道独立或叠加的波形效果。          感兴趣的朋友不妨去看看他的详细参数:...
用户1587532 2011-10-12 10:23
Keil存储空间自定义分配
Keil存储空间自定义分配          看来Capital-Micro的软件支持包做得还不够到位啊,在51编程环境KeilC中使用Astro II器件光有个Capital Micro D...
用户1587532 2011-09-22 16:38
源同步信号跨时钟域采集的两种方法
源同步信号跨时钟域采集的两种方法            对于数据采集接收的一方而言,所谓源同步信号,即传输待接收的数据和时钟信号均由发送方产生。FPGA应用中,常常需要产生一些源同步接口信...
我要评论
14
17
关闭 站长推荐上一条 /3 下一条