TCP/IP协议专题 学习笔记

上一篇 / 下一篇  2013-05-08 15:49:37 / 个人分类:TCP/IP


缩写
TCP:Transmission Control Protocol
IP:Internet Protocol
RFC:Request for Comments
ARPANET:Advanced Research Project Agent Network
IAB:Internet Architecture Board
FTP:File Transfer Protocol
DNS:Domain Name System
OSI:Open System Interconnection
ARP:Address Resolution Protocol 地址解析协议
MPLS:Mutiple Protocol Label Switching 多协议标签交换
ICMP:Internet Control Messages Protocol 互联网控制消息(报文)协议
IGMP:Internet Group Management Protocol 互联网组管理协议
UDP:User Datagram Protocol 用户数据报协议


TCP/IP简介
> 历史起源
早期的电脑是相互独立的连接系统,即网路;
由于形势需要,美国试图发展一套机制,用来连接各个离散的网路系统;由美国防部委托ARPA发展的ARPANET网路系统,实现了网路交换技术;它包括了一组电脑通讯细节的网路标准以及一组用来连接网路和选择网路交通路径的协定,这就是最初的TCP/IP协议;最初只做研究用途和军事通讯;
ARPA后来发展一个便宜版本,鼓励大学和研究人员采用这个协定;适逢大学UNIX系统有互连的需求,而UNIX系统上研究出来的许多抽象概念与TCP/IP的特性非常吻合,再加上设计的公开性,TCP/IP协议被更多的组织使用。
> TCP/IP 标准制定
TCP/IP 协议不属于某一特定厂商和机构。
它的标准是由IAB制定的;
它的相关资讯,是由INTERNIC维护和发表的;
TCP/IP 的标准大部分以RFC技术报告的形式公开。
> TCP/IP 的应用
共享资源;
以 TCP/IP 协议为基础,忽略硬体结构开发共同的应用程式,如www,e-mail,FTP,DNS服务;
> TCP/IP的特性
Connectionless Packet Delivery Service 无连接分组交换服务
Reliable Stream Transport Service 可靠的数据流传输服务
Network Technology Independent 独立网路技术
Universal Interconnection 通用连接
End-to-End Acknowledgements 端到端确认
Application Protocol Standards 应用程序协议标准
· Reliable Stream Transport Service 
  因为封包交换并不能确保每一个封包的可靠性﹐因此我们就需要通讯软体来自动侦测和修复传送过程中可能出现的错误﹐和处理不良的封包。这种服务就是用来确保电脑程式之间能够建立连接和传送大量资料。关键的技术是将资料流进行切割﹐然后编号传送﹐然后透过接收方的确认(acknowledgement)来保证资料的完整性。
  · Network Technology Independent 
  在封包交换技术中﹐TCP/IP 是独立与硬体之上的。TCP/IP 有自己的一套资料包规则和定义﹐能应用在不同的网路之上。
  · Universal Interconnection 
  只要电脑用 TCP/IP 连接网路﹐都将获得一个独一无二的识别位址。资料包在交换的过程中﹐是以位址资料为依据的﹐不管封包所经过的路由之选择如何﹐资料都能被送达指定的位址。
  · End-to-End Acknowledgements 
  TCP/IP 的确认模式是以“端到端”进行的。这样就无需理会封包交换过程中所参与的其它设备﹐发送端和接收端能相互确认才是我们关心得。
  · Application Protocol Standards 
  TCP/IP 除了提供基础的传送服务﹐它还提供许多一般应用标准﹐让程式设计人员更有标准可依﹐而且也节省了许多不必要的重复开发。
>TCP/IP 扮演的角色
最初是配合ARPANET来处理不同硬体之间的连接问题的;
IP工作于网路层,提供一套网路需遵守的共同规则;
TCP工作于传输层,在IP的基础之上提供了传输的共同规则和一套保证传输的机制。

 
TCP/IP协议概述
>OSI参考模型及TCP/IP参考模型
OSI协议参考模型从上到下分7层:应用层、表示层、会话层、传输层、网络层、数据链路层及物理层;
TCP/IP协议模型就是基于OSI的分层架构思想,但不像OSI那么复杂,它简化为4层,包括网路接口层、网络层、传输层、应用层;
>网路接口层:负责将二进制流转换为数据帧,并进行数据帧的发送和接收;要注意的是数据帧是独立的网络信息传输单元;(底层和IP层的通信)
>网络层:负责将数据帧封装成IP数据报,并运行必要的路由算法,然后将数据报发送到适当的网路接口,并处理路径、流控、阻塞等问题,从而实现计算机之间的通信;(处理数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报)
>传输层:负责端对端之间的通信会话连接与建立;传输协议的选择根据数据传输方式而定;实现应用程序之间的通信;(功能:格式化信息流;提供可靠性传输,规定接收端必须发回确认,否则重新发送)
>应用层:负责应用程序的网络访问,这里通过端口号来识别各个不同的进程。( 根据不同的应用程序而使用相应的协议,如电子邮件、文件传输、远程登录)

>TCP/IP协议族
名称只包含了两个协议,但实际上,TCP/IP 是一个庞大的协议族,它包括了各个层次上的众多协议;
ARP:用于获得同一物理网络中的硬件主机地址
MPLS:多协议标签协议,是很有发展前景的下一代网络协议
IP:负责在主机和网络之间寻址和路由数据包
ICMP:用于发送报告有关数据包的传送错误的协议
IGMP:被IP主机用来向本地多路广播路由器报告主机组成员的协议
TCP:为应用程序提供可靠的通信连接;适合于一次传输大批数据的情况;并适用于要求得到响应的应用程序
UDP:提供了无连接通信,且不对传送包进行可靠的保证;适合于一次传输少量数据,可靠性则由应用层来负责
SMTP:简单邮件传输协议 FTP:文件传输协议
TCP
>TCP向相邻的高层提供服务;TCP的上层是应用层;TCP数据传输实现了从一个应用程序到另一个应用程序的数据传递;应用程序通过编程调用TCP 并使用TCP 服务,提供需要准备发送的数据,用来区分接收数据应用的目的地址和端口号;通常应用程序通过打开一个socket 来使用TCP 服务,TCP 管理到其他socket 的数据传递;可以说,通过IP的源/目的可以惟一地区分网络中两个设备的关联,通过socket的源/目的可以惟一地区分网络中两个应用程序的关联。
>三次握手协议
TCP协议为提供可靠地连接服务,采用三次握手建立一个连接;
简单过程:
初始化主机通过一个同步标志置位的数据段发出会话请求;
接收主机通过发回具有以下项目的数据段表示回复:同步标志置位、即将发送的数据段的起始字节的顺序号、应答并带有将收到的下一个数据段的字节顺序号;
请求主机再回送一个数据段,并带有确认顺序号和确认号。
当发送方传送一个数据报时,它将启动计时器;如果发送方的定时器在确认信息到达之前超时,那么发送方会重发该数据报。

UDP
>无连接协议,不需要建立连接;一个UDP应用可同时作为应用的客户或服务器方;
应用实例如网络视频会议系统。

TCP报头格式的含义如文末;UDP略。

>协议的选择
考虑3个方面:
对数据可靠性的要求(使用TCP协议的可靠性高一些,要求不高的应用可选择UDP);
应用的实时性(TCP协议为保证数据传输的可靠性采用三次握手、重传确认等手段,会有较大延迟,所有不适合对实时性要求较高的应用,如VOIP、视频监控等,而UDP则能发挥更好的作用);
网络的可靠性(TCP协议的提出主要就是解决网路的可靠性问题,它通过各种机制来减少错误发生的概率。因此网络状况不好的情况下需选用TCP协议,如广域网情况。而网络状况很好时则选择UDP协议来减少网络负荷)


TCP/IP协议原理
网路接口层、网路层、传输层、应用层

>各种L2数据网(按OSI分层,对应数据链路层)有不同的通讯协议和帧结构,其网络节点设备可以是各种类型的数据交换机;L3数据网(IP网或网络层)具有统一的TCP/IP通信协议和分组结构,全网采用统一格式的IP地址,节点设备统一采用面向无连接的路由器。
> Internet是一个全世界范围的计算机网络;通信角度看,internet是一个以TCP/IP为统一标准、将全世界范围内多个国家的部门和机构的两层计算机子网连接而成的三层数据网;资源角度看,是一个集各领域、各学科、各种应用等各种资源为一体的资源数据网;
Internet依靠TCP/IP实现了网络互联;
用户使用internet无需了解网络底层(物理层和链路层)。
>Internet内部,计算机之间互相发送 信息包 进行通信;TCP/IP协议对这种信息包的传输方式作了具体规定;
>IP协议
1.IP协议定义在网络层;规定了如IP数据包的组成、路由器如何将IP数据包发送到目的主机等规则;
各种物理网络在链路层所传输的基本单元为帧(MAC帧),其帧格式和物理地址(MAC地址)都随物理网络而异;
IP协议的作用就是向传输层(TCP层)提供统一的IP包,即将不同类型的MAC帧转换为统一的IP包,将MAC帧的物理地址变换为统一的逻辑地址(IP地址),从而消除不同网络MAC的差异,实现不同物理网络的互联;
IP协议面向无连接,IP网中的节点路由器根据每个IP包的包头IP地址进行寻址,这样同一个主机发出的属于同一报文的IP包可能会经过不同的路径到达目的主机。
2.IP协议的功能
寻址、路由选择、分段与组装
路由选择是以单个IP数据包为基础的,概括而言是确定某个IP数据包到达目的主机需经过哪些路由器;路由选择可以由源主机决定,也可以由IP数据包所途经的路由器决定;
在IP协议中,路由选择依靠路由表进行;在IP网上的主机和路由器中均保存了一张路由表,路由表指明下一个路由器(或目的主机)的IP地址;
IP数据包在实际传送过程中所经过的物理网络帧的最大长度可能不同,当长IP数据包需通过短帧子网时,需对IP数据包进行分段与组装;
IP协议实现分段与组装的方法是给每个IP数据包分配一个惟一的标志符,且报头部分还有与分段与组装相关的分段标记和位移;IP数据包在分段时,每一段需包含原有的标志符;
为了提高效率、减轻路由器的负担,重新组装工作由目的主机来完成。

>TCP协议
传输层,端对端、面向连接的协议;
功能:保证传输的可靠性,提供部分应用层信息
弥补了IP协议的某些不足,突出表现在:
1.TCP协议能够保证在IP数据包丢失时进行重发,能够删去重复收到的IP数据包,还能保证准确地按原发送端的发送顺序重新组装数据;
2.能区别属于同一应用报文的一组IP数据包,并能鉴别应用报文的性质(使得某些具有四层协议功能的高端路由器可以对IP数据包进行流量、优先级、安全管理、负荷分配和复用等智能控制)

>TCP/IP的工作原理
以采用TCP/IP协议传送文件为例,其中应用层传输文件采用文件传输协议(FTP)
工作流程如下:()
>在源主机上,应用层将一串应用数据流传送给传输层;
>传输层将应用层的数据流截成分组,并加上TCP报头形成TCP段,送交网络层;
>在网络层给TCP段加上包括源、目的主机IP地址的IP报头,生成一个IP数据包,并将IP数据包送交链路层;
>链路层在其MAC帧的数据部分装上IP数据包,再加上源、目的主机的MAC地址和帧头,并根据其目的MAC地址,将MAC帧发往目的主机或IP路由器;
>在目的主机,链路层将MAC帧的帧头去掉,并将IP数据包送交网络层;
>网络层检查IP报头,如果报头中校验和与计算结果不一致,则丢弃该IP数据包;若校验和与计算结果一致,则去掉IP报头,将TCP段送交传输层;
>传输层检查顺序号,判断是否是正确的TCP分组,然后检查TCP报头数据。若正确,则向源主机发确认信息;若不正确或丢包,则向源主机要求重发信息;
>在目的主机,传输层去掉TCP报头,将排好顺序的分组组成应用数据流送给应用程序。这样目的主机接收到的来自源主机的字节流,就像是直接接收来自源主机的字节流一样。



ps:
1 数据交换机:用于完成数据信息转换的通信设备。分为电路交换、电文交换和分组交换数据交换机。第3种是前两种交换机的改进型。
2 TCP提供部分应用层的信息 (传输层的上层就是应用层) 
TCP协议对这些应用层协议规定了整数标志符,称为端口序号。被规定的端口序号成为保留端口,其值在0~1 023范围内(如端口序号23,用于远程终端服务)。此外还有自由端口序号,供个人程序使用,或者用来区分两台主机间相同应用层协议的多个通信,即两台主机间复用多个用户会话连接。
进行通信的每台主机的每个用户会话连接都有一个插口序号,它由主机的IP地址和端口序号组成。在internet中插口序号是惟一的,一对插口序号惟一地标识了一个端口的连接(发端插口序号=源主机IP地址+源端口序号,收端插口序号=目的主机IP地址+目的端口序号)。利用插口序号可在目的主机中区分不同源主机对同一个目的主机相同端口序号的多个用户会话连接。
利用SYN/FIN两个码位来规定某一应用报文(或某一应用数据流)的开始(SYN置1)与结束(FIN置1)。


TCP/IP协议安全
各个结构层存在的安全漏洞
http://cisco.chinaitlab.com/TCP/814382.html

测试TCP/IP
IP地址 127.0.0.1 是回送地址(loop back address),指本地机,一般做测试使用;
ping命令是通过ICMP协议获取网路连接的连通信息,以检查网路的连接状况;
ping 127.0.0.1是为了检测本机的回路是否正常,即说明本机的TCP/IP协议安装正常(或者主机的ip配置是否正确)。

1 "开始->运行->cmd"
2 输入 "ipconfig /all" 检查IP地址、子网掩码、默认网关、DNS服务器地址等网络配置是否正确
3 输入"ping 127.0.0.1"(或者默认网关?)检查网卡是否能转发数据;出现"request timed out" 表明配置有差错或网络有问题
4 ping 一个互联网地址,如 "ping 202.102.128.68" ,看是否有数据包转回,以验证与互联网的连接
5 ping 一个局域网地址,检查与它的连通性
6 用 nslookup 测试 DNS解析是否正确,输入 如 "nslookup www.51testing.com" 查看能否解析

如果计算机通过了全部测试,说明网络正常,否则网络可能有不同程度的问题。不过,要注意,在使用 ping命令时,有些公司会在其主机设置丢弃ICMP数据包,造成你的ping命令无法正常返回数据包,不防换个网站试试。

TCP数据报头的含义如下所示

  源端口、目的端口:16 位长,标识出远端和本地的端口号。

   序号:32 位长,标识发送的数据报的顺序。

  确认号:32位长,希望收到的下一个数据报的序列号。

  TCP头长:4 位长,表明TCP头中包含多少个32位字。

  6位未用。

  ACK:ACK 位置1 表明确认号是合法的。如果ACK 为0,那么数据报不包含确认信息,确认字段被省略。

  PSH:表示是带有PUSH 标志的数据。接收方因此请求数据报一到便可送往应用程序而不必等到缓冲区装满时才传送。

  RST:用于复位由于主机崩溃或其他原因而出现的错误的连接。还可以用于拒绝非法的数据报或拒绝连接请求。

  SYN:用于建立连接。

  FIN:用于释放连接。

  窗口大小:16 位长。窗口大小字段表示在确认了字节之后还可以发送多少个字节。

  校验和:16 位长。是为了确保高可靠性而设置的。它校验头部、数据和伪TCP头部之和。

  可选项:0 个或多个32 位字。包括最大TCP 载荷,窗口比例、选择重发数据报等选项。

/**来自 http://cisco.chinaitlab.com/Special/TCPIP2/index.html**/



TAG:

 

评分:0

我来说两句

Open Toolbar