开发者社区> 技术小牛人> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

TCP/IP 通信协议 应用浅析

简介:
+关注继续查看
  TCP/IP协议 大家无论在工作还是在生活中的某个角落都能够听到这个词的名称,局域网中的主机如果想进行通信或访问网络都需要对TCP/IP协议进行配置,如下图 -1-2
图 -1
 
图 -2
 
  可是当我们进行TCP/IP协议进行分析的时候,却发现不知道该如何调整思路,因为这个TCP/IP协议特抽象了,光进行理论上的解说,想必大家都接受不了,理论上的东西不好理解也难以捉摸,怎样才能用一种白话的形式进行TCP/IP协议的分析达到更好理解TCP/IP协议的目的呢,我就用我对TCP/IP协议的理解简单的概述下,希望对这方面研究的朋友有点帮助。
 
  就像不同国家的人之间进行交流时需要使用一种彼此都能理解的语言,网络中的计算机要想相互进行“交流”,也必须选择一种彼此都能听得懂的“公用语言”,即我们通常所说的网络通信协议。TCP/ IP 是应用最为广泛的一种网络通信协议,无论在局域网、广域网还是Internet ,无论是Unix 系统、Windows 平台,它都支持,可以说TCP/ IP 协议是计算机世界的一个通用“语言”。 TCP/IP是一个协议族,并不是单指TCPIP,更不是指单一的TCP/IP,这点很重要,因为我们在Internet协议(TCP/IP)属性里配置IP地址、子网掩码、默认网关、DNS服务器的时候,总把它作为一个单一的TCP/IP协议使用,而TCPIP只是其中两个基本协议而已。对于TCP/IP理解正确的应该是“用于计算机通信的一个协议集,它包括TCPIPARPICMPUDPRIPFTPSMTP等多种协议”。
 
  我们初步知道TCP/IP协议族是一组不同的协议构成的协议族,尽管通常称该协议族为TCP/IP,但T C PI P只是其中的两种协议而已,这种观点已经在上述中加以阐述了。下面我们简要的把OSI模型、TCP/IP模型、及其各协议之间的对应关系用表格描述下,因为从体系结构来看,TCP/IPOSI 7层模型的简化。如图 -3
 
 
  从上面的表格中可以看到这几层模型中所对应的各种协议, 每个协议在对应层中都有自己的功能与职责,从下面一个实例中,我们通过QQ聊天的模式看TCP/IP模型对应的一些协议在实例中的具体应用。
 
  用户大姜和用户风明的客户端各开启了qq,大姜想和风明聊天:
  大姜在qq中输入“你好,最近忙不忙!”点击“发送”→到传输层进行udp头部封装,把数据分段在udp包头中请求建立连接→到网络层进行ip包头封装,分段编号,分成数据包或报文→若大姜的ip地址和风明的在同一个网段则用网络接口层arp解析出风明的mac地址,若大姜的ip地址与风明的不在同一个网段则用代理arp解析出路由器的mac地址→到数据链路层进行llcmac头部封装fcs校验,封装成帧→对于不再同一网段的客户端通过路由选址选择最佳路径,经过路由器转发到交换机到达风明的同一个网段内→通过传输介质传到风明计算机的网卡→数据链路层可以识别llcmac头部fcs校验,解封装,并检测类型长度大于006h发给ip包→传到网络层,网络层可以识别ip包头,解封装并检测到协议号为17→发到传输层,传输层用udp并检测到目标端口号是4000发到应用层→应用层用qq打开→b看到“你好,最近忙不忙!”, 通过上面一个QQ发送和接收消息的最简单例子,大家应该能够很直观的理解了TCP/IP以及OSI模型的工作过程。虽然看上去很乱,或许都没有时间看完,可是TCP/IP协议确实不是一两天研究或记住它的工作原理就能搞清楚的。
 
  TCP/IP体系结构以TCP/IP协议族(TCP/IP protocol suite)中最具有代表性的两个协议,即传输控制协议(Transmit ControlProtocol, TCP)和网际协议(Internet Protocol,IP)来命名TCP/IP (Transmission Control Protocol / Internet Protocol) 技术的核心是实现网络的互联,其关键的思想是在底层物理网络与高层应用程序和用户之间加入中间层次,屏蔽底层细节,向用户提供通用一致的网络服务。这句话看上去比较绕口,也比较抽象,光从字面理解却不知所云。我们先从TCP/IP协议中的TCPIP协议简单的看下在实际的工作中所处理的事情,TCP是一个面向连接的协议无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接建立连接的过程就是三次握手的过程,三次握手的过程是比较著名的论述,下面我们通过一个简单的实例来看下,三次握手如何建立连接的。比如大姜问程程借几本书,第一步:大姜说:“你好,我是大姜”,第二步:程程说:“你好,我是程程”,第三步:大姜说:“我找你借几本书。”这样通过问答就确认对方身份,建立了联系。
 
  IP协议是用于传输IP数据报的协议,它实现的是不可靠无连接的数据报服务,它是TCP/IP协议族的核心,传输层上的数据信息和网络层上的控制信息都以IP数据报的形式传输。比如IP协议就像运货的卡车,将一车车的货物运向目的地。主要的货物就是TCPUDP分配给它的。需要特别指出的是IP提供不可靠、无连接的数据报传送,也就是说IP仅提供最好的传输服务但不保证IP数据报能成功地到达目的地。也就是说,IP协议提供了一辆卡车,至于卡车中途会不会出现意外能不能到达目的地,不是IP协议所考虑的问题。看到这你会不会担心你的E-MAIL会不会送到朋友那,其实不用担心,保证数据正确到达目的地是TCP的工作TCP的数据包是靠IP协议来传输的。但IP协议是只管把数据送到出去,但不能保证IP数据报能成功地到达目的地,保证数据的可靠传输是靠TCP协议来完成的。当接收端收到来自发送端的信息时,接受端详发送一条应答信息,意思是:“我已收到你的信息了”
 
  TCP/IPINTERNET的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCPIP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IPINTERNET中几乎可以无差错地传送数据。IPTCP这两个协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个协议来设计的,并且在功能上也是互补的。只有两者的结合,才能保证 Internet 在复杂的环境下正常运行。凡是要连接到 Internet 的计算机,都必须同时安装和使用这两个协议,因此在实际中常把这两个协议统称作TCP/IP协议。IP协议中定义的传输是单向的,也就是说发出去的货物对方有没有收到我们是不知道的。就好像8毛钱一份的平信一样。那对于重要的信件我们要寄挂号信怎么办呢?TCP协议就是帮我们寄“挂号信”的。TCP协议提供了可靠的面向对象的数据流传输服务的规则和约定。简单的说在TCP模式中,对方发一个数据包给你,你要发一个确认数据包给对方,通过这种确认来提供可靠性。
 
  TCP协议被称作一种端对端协议。这是因为它为两台计算机之间的连接起了重要作用:当一台计算机需要与另一台远程计算机连接时,TCP协议会让它们建立一个连接、发送和接收资料以及终止连接。如果希望能在 Internet 上进行交流和通信,则每台连上 Internet 的计算机都必须遵守IP协议。为此使用 Internet 的每台计算机都必须运行IP软件,以便时刻准备发送或接收信息。IP协议对于网络通信有着重要的意义:网络中的计算机通过安装IP软件,使许许多多的局域网络构成了一个庞大而又严密的通信系统。从而使 Internet 看起来好像是真实存在的,但实际上它是一种并不存在的虚拟网络,只不过是利用IP协议把全世界上所有愿意接入 Internet 的计算机局域网络连接起来,使得它们彼此之间都能够通信。IP协议已经规定了数据传输的主要内容。
 
  限于篇幅的需要,先介绍这么多有关TCP/IP协议的内容,原本用白话的形式加以概述,可是这个题目过于深奥,加上我对这个协议理解的不够深刻,所以只能在某些问题上还是用术语表达,某些问题采用了白话的形式,至于TCP/IP工作的原理,及各层协议的应用这里就不描述了,就关于TCP\IP中的TCP、IP协议就难以理清了,何况还有那么多层的协议需要我们应用和理解。由于时间仓促,难免有错误之处,请读者指正。

 

本文转自 

jiangxuezhi2009 51CTO博客,原文链接:http://blog.51cto.com/jiangxuezhi/342218 ,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
MySQL应用的异常记录
Error Code: 1045. Access denied for user 'test'@'%' (using password: YES) 使用MySQL的select * into outfile ‘/tmp/rs.
1366 0
通过shell脚本来得到不稳定的执行计划
生产系统中总是可能碰到各种各样的sql问题,其中大部分问题都和执行计划有关,执行计划出现问题有很多原因导致,比如统计信息过旧,比如数据的分布极不均匀等等都会导致执行计划出现很大的偏差。
964 0
通过shell定制ash脚本
ash是在10g以来一个很有用的特性,能够作为awr的补充,对于排查一些历史的问题能够提供更加详细和针对性的数据。 当然个人在使用ash的时候感觉最慢的地方就是在于输入时间戳了,每次输入侧时候都得一边看着样例,一边按照格式,一份ash的报告,至少20%以上的时间耗在这个时间戳上了。
846 0
Modbus 通讯协议
摘要 工业控制已从单机控制走向集中监控、集散控制,如今已进入网络时代,工业控制器连网也为网络管理提供了方便。Modbus就是工业控制器的网络协议中的一种。 关键词 Modbus协议,串行通信,LRC校验,CRC校验,RS-232C 1. Modbus 协议简介 Modbus 协议是应用于电子控制器上的一种通用语言。
1006 0
【SQL 学习】INTERSECT,MINUS ,
SQL> select product_id,product_type_id ,name  2  from products  3  intersect               ---返回两查询结果共有的数据行  4  select prd_id,prd_t...
765 0
5723
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载