TCPIP详解
什么是TCP/IP模型?TCP/IP模型是一系列网络协议的总称,这些协议的目的,就是使计算机之间可以进行信息交换。所谓“协议”可以理解成机器之间交谈的语言,每一种协议都有自己的目的。TCP/IP模型一
什么是TCP/IP模型?
TCP/IP模型是一系列网络协议的总称,这些协议的目的,就是使计算机之间可以进行信息交换。
所谓“协议”可以理解成机器之间交谈的语言,每一种协议都有自己的目的。TCP/IP模型一共包括几百种协议,对互联网上交换信息的各个方面都做了规定。 TCP/IP模型的四层结构
这些协议可以大致分成四个层次,上一层的协议都以下一层的协议为基础。就像下面这张图:

从下到上的四层,分别为连接层(Link Layer)、网络层(Internet Layer)、传输层(Transport Layer)、应用层(Application Layer)。
可以这样理解它们的作用:
1)连接层负责建立电路连接,是整个网络的物理基础,典型的协议包括以太网、ADSL 等等;
2)网络层负责分配地址和传送二进制数据,主要协议是IP 协议;
3)传输层负责传送文本数据,主要协议是TCP 协议;
4)应用层负责传送各种最终形态的数据,是直接与用户打交道的层,典型协议是HTTP 、FTP 等。
理解这个结构的关键,在于理解科学家在70年代设计互联网的原始目的,就是为了传输文本。所有协议最初都是为了这个目标而设计的,互联网架构的核心就是文本对话。
实例:用Telnet 建立HTTP 对话
为了观察文本在互联网上是如何传输的,我们做一个小实验。
第一步:在“开始”菜单中,点击“运行”命令,输入“telnet google.com 80”。
,
telnet 命令本身就是一个应用层协议,它的作用是在两台主机间,建立一个TCP 连接,也就是打开两台主机间文本传输的一个通道。
“telnet google.com 80”表示建立本机与google.com 在80端口的一个文本传输通道。所谓“端口”其实是TCP 协议的一个参数,用来帮助TCP 协议判断对方主机传来 的文本,到底使用的是哪一种应用层协议。80端口是HTTP 协议的端口,就是我们平时浏览网页的端口。常见端口列表可以参考这里。
另外,与Windows 2000和Windows XP不同,Vista 系统默认没有安装Telnet 客户端,大家可以参考微软公司的安装说明自行安装。如果你使用的是Linux 系统,那么可以直接在命令行窗口中,输入上面的命令。
第二步:打开本地显示。(非Windows 系统跳过此步。)
请按以下步骤操作:在Telnet 窗口中按下“Ctrl ]”;然后,输入“set localecho ”命令,再连续按下两次回车键。

好了,这个时候你就可以直接同google.com 主机进行对话了。
第三步:你可以试着同Google 随便说句话,看看有什么反应。
我输入了“Hello World!”。
,
结果,Google 的回答是这样的:

“400 Bad Request ”说明Google 看不懂你的发言。这是毫不奇怪的,因为这时你是在TCP 文本通道中,进行HTTP 对话。所以,你的发言必须遵守HTTP 协议,这样Google 才能看懂。
第四步:输入“GET / HTTP/1.1”,表示向google 索要首页根文件,使用的协议是HTTP 的1.1版本。
Google 的回应如下:
,
"200 OK"表示要求数据成功。在头部信息的下面,就是google 在浏览器中显示的首页文件的源代码。
总结
上面这个例子用的是HTTP 协议,如果要使用其他“应用层协议”与主机进行对话,你只要改变端口就行了。比如,“telnet ftp.website.com 21”,表示用ftp 协议进行对话。
所有这些对话的底层协议,都是TCP 协议,因为这是负责文本传输的协议;而TCP 协议又必须依靠IP 协议,进行二进制数据的传输;而二进制数据的传输,离不开最底层负责网络连接的物理协议。
所以,通过这样四层的网络架构,就实现了整个互联网的通信。
TCP/IP协议
传输控制协议/因特网互联协议,又名网络通讯协议,是Internet 最基本的协议、Internet 国际互联网络的基础,由网络层的IP 协议和传输层的TCP 协议组成。TCP/IP 定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。通俗而言:TCP 负责发现传输的问题,一有问题就发出信号,要求重新
,传输,直到所有数据安全正确地传输到目的地。而IP 是给因特网的每一台电脑规定一个地址。
从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网际层、运输层、应用层。
TCP/IP协议并不完全符合OSI 的七层参考模型。OSI 是传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己。由于 ARPNET的设计者注重的是网络互联,允许通信子网(网络接口层)采用已有的或是将来有的各种协议,所以这个层次中没有提供专门的协议。实际上,TCP/IP协议可以通过网络接口层连接到任何网络上,例如X.25交换网或IEEE802局域网。

网络接口层
物理层是定义物理介质的各种特性:1、机械特性2、电子特性3、功能特性 4、规程特性。
数据链路层是负责接收IP 数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP 数据报,交给IP 层。
常见的接口层协议有: Ethernet 802.3、Token Ring 802.5、X.25、Frame relay 、HDLC 、PPP ATM等。
网络层
负责相邻计算机之间的通信。其功能包括三方面。
一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP 数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
二、处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。
三、处理路径、流控、拥塞等问题。
,网络层包括: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 服务。
传输层
提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。
传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram protocol)。
应用层
向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET 使用TELNET 协议提供在网络其它主机上注册的接口。TELNET 会话提供了基于字符的虚拟终端。文件传输访问FTP 使用FTP 协议来提供网络内机器间的文件拷贝功能。
应用层一般是面向用户的服务。如FTP 、TELNET 、DNS 、SMTP 、POP3。 FTP(File Transfer Protocol )是文件传输协议,一般上传下载用FTP 服务,数据端口是20H ,控制端口是21H 。
Telnet 服务是用户远程登录服务,使用23H 端口,使用明码传送,保密性差、简单方便。
DNS(Domain Name Service)是域名解析服务,提供域名到IP 地址之间的转换。 SMTP(Simple Mail Transfer Protocol )是简单邮件传输协议,用来控制信件的发送、中转。
POP3(Post Office Protocol 3)是邮局协议第3版本,用于接收邮件。


网络层中的协议主要有IP ,ICMP ,IGMP 等,由于它包含了IP 协议模块,所以它是所有基于TCP/IP协议网络的核心。在网络层中,IP 模块完成大部分功能。ICMP 和IGMP 以及其他支持IP 的协议帮助IP 完成特定的任务,如传输差错控制信息以及主机/路由器之间的控制电文等。网络层掌管着网络中主机间的信息传输。 传输层上的主要协议是TCP 和UDP 。正如网络层控制着主机之间的数据传递,传输层控制着那些将要进入网络层的数据。两个协议就是它管理这些数据的两种方式:TCP 是一个基于连接的协议;UDP 则是面向无连接服务的管理方式的协议。
数据帧:帧头 IP数据包 帧尾 (帧头包括源和目标主机MAC 地址及类型,帧尾是校验字)
IP 数据包:IP 头部 TCP数据信息(IP 头包括源和目标主机IP 地址、类型、生存期等)
TCP 数据信息:TCP 头部 实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)
IP 地址:在Internet 上连接的所有计算机,从大型机到微型计算机都是以独立的身份出现,我们称它为主机。为了实现各主机间的通信,每台主机都必须有一个唯一的网络地址。就好像每一个住宅都有唯一的门牌一样,才不至于在传输资料时出现混乱。 我们可以把“个人电脑”比作“一台电话”,那么“IP 地址”就相当于“电话号码”,而Internet 中的路由器,就相当于电信局的“程控式交换机”。
Internet 的网络地址是指连入Internet 网络的计算机的地址编号。所以,在Internet 网络中,网络地址唯一地标识一台计算机。
我们都已经知道,Internet 是由几千万台计算机互相连接而成的。而我们要确认网络上的每一台计算机,靠的就是能唯一标识该计算机的网络地址,这个地址就叫做IP (Internet Protocol的简写)地址,即用Internet 协议语言表示的

几类特殊的网络地址
“lll0”开始的地址都叫多点广播地址。因此,任何第一个字节大于223小于
,240的IP 地址(范围224.0.0.1-239.255.255.254) 是多点广播地址; 每一个字节都为0的地址(“0.0.0.0”)对应于当前主机;
IP 地址中的每一个字节都为1的IP 地址(“255.255.255.255”)是当前子网的广播地址;
IP 地址中凡是以“llll0”开头的E 类IP 地址都保留用于将来和实验使用。 IP 地址中不能以十进制“127”作为开头,该类地址中数字127.0.0.1到127.1.1.1用于回路测试,如:127.0.0.1可以代表本机IP 地址,用“http://127.0.0.1”就可以测试本机中配置的Web 服务器。
网络ID 的第一个6位组也不能全置为“0”,全“0”表示本地网络。 网关地址
若要使两个完全不同的网络(异构网)连接在一起,一般使用网关,在Internet 中两个网络也要通过一台称为网关的计算机实现互联。这台计算机能根据用户通信目标计算机的IP 地址,决定是否将用户发出的信息送出本地网络,同时,它还将外界发送给属于本地网络计算机的信息接收过来,它是一个网络与另一个网 络相联的通道。为了使TCP/IP协议能够寻址,该通道被赋予一个IP 地址,这个IP 地址称为网关地址。
那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP 地址。比如有网络A 和网络B ,网络A 的IP 地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B 的IP 地址范围为
“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码
(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A 中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B 的网关,网络B 的网关再转发给网络B 的某个主机(如附图所示)。网络B 向网络A 转发数据包的过程也是如此。所以说,只有设置好网关的IP 地址,TCP/IP协议才能实现不同网络之间的相互通信。那么这个IP 地址是哪台机器的IP 地址呢?网关的IP 地址是具有路由功能的设备的IP 地址,具有路由功能的设备有路由器、启用了路由协议的服务器(实质上相当于一台路由器)、代理服务器(也相当于一台路由器)。
子网划分
若公司不上Internet ,那一定不会烦恼IP 地址的问题,因为可以任意使用所有的IP 地址,不管是A 类或是B 类,这个时候不会想到要用子网,但若是上Internet 那IP 地址便弥足珍贵了,目前全球一阵Internet 热,IP 地址已经愈来
,愈少了,而所申请的IP 地址目前也趋饱和,而且只有经申请 的IP 地址能在Internet 使用,但对某些公司只能申请到一个C 类的IP 地址,但又有多个点需要使用,那这时便需要使用到子网,这就需要考虑子网的划分,下面简介子网的原理及如何规划。
子网掩码
设定任何网络上的任何设备不管是主机、个人电脑、路由器等皆需要设定IP 地址,而跟随着IP 地址的是所谓的子网掩码(NetMask,Subnet Mask ),这个子网掩码主要的目的是由IP 地址中也能获得网络编码,也就是说IP 地址和子网掩码合作而得到网络编码,
子网作用
使用子网是要解决只有一组C 类地址但需要数个网络编码的问题,并不是解决IP 地址不够用的问题,因为使用子网反而能使用的IP 地址会变少,子网通常是使用在跨地域的网络互联之中,两者之间使用路由器连线,同时也上Internet ,但只申请到一组C 类IP 地址,过路由又需不同的网络,所以此时就必须使用到子网,当然二网络间也可以远程桥接(Remote Bridge,字面翻译)连接,那便没有使用子网的问题。
IP 是英文Internet Protocol的缩写,意思是“网络之间互连的协议”,也就是为计算机网络相互连接进行通信而设计的协议。在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,规定了计算机在因特网上进行通信时应当遵守的规则。IP 协议也可以叫做“因特网协议”。 IP 是怎样实现网络互连的?各个厂家生产的网络系统和设备,如以太网、分组交换网等,它们相互之间不能互通,不能互通的主要原因是因为它们所传送数据的基本单元(技术上称之为“帧”)的格式不同。IP 协议实际上是一套由软件程序组成的协议软件,它把各种不同“帧”统一转换成“IP 数据报”格式。
那么,“数据报”是什么?它又有什么特点呢?数据报也是分组交换的一种形式,就是把所传送的数据分段打成“包”,再传送出去。但是,与传统的“连接型”分组交换不同,它属于“无连接型”,是把打成的每个“包”(分组)都作为一个“独立的报文”传送出去,所以叫做“数据报”。这样,在开始通信之前就不需要先连接好一条电路,各个数据报不一定都通过同一条路径传输,所以叫做“无连接型”。 每个数据报都有报头和报文这两个部分,报头中有目的地址等必要内容,使每个数据报不经过同样的路径都能准确地到达目的地。在目的地重新组合还原成原来发送的数据。这就要IP 具有分组打包和集合组装的功能。
,IP 协议中还有一个非常重要的内容,那就是给因特网上的每台计算机和其它设备都规定了一个唯一的地址,叫做“IP 地址”。由于有这种唯一的地址,才保证了用户在连网的计算机上操作时,能够高效而且方便地从千千万万台计算机中选出自己所需的对象来。
网络地址:在申请IP 地址或是阐述TCP/IP协议的IP 地址分类时,用到这个术语。它表示IP 地址的代码序列中不可更加需要改变的部分。
主机地址:在申请IP 地址或是阐述TCP/IP协议的IP 地址分类时,用到这个术语。它表示IP 地址的代码序列中能够更具需要改变的部分。
子网屏蔽:在阐述TCP/IP协议的IP 地址分类时,用到这个术语。在申请IP 地址时,由它表示所申请到的IP 地址的网络地址和主机地址。
网络编码(网络号):经过子网划分后,子网掩码序列中“1”对应的IP 地址部分。一个网络编码,对应一个网域(或网段)。包括申请到的网络地址的全部和主机地址的部分。
主机编码(主机号):经过子网划分后,子网掩码序列中“0”对应的IP 地址部分。一个主机编码,对应一个网域(或网段)的一台计算机。包括申请到主机地址的部分。
子网掩码:用于子网划分,它将能够改变的主机地址分为主机编码和网络编码的一部分。同时,它将网络地址全部确定为网络编码。
IP地址,这个应该知道吧,即指使用TCP/IP协议指定给主机的32位地址。IP 地址由用点分隔开的4个8八位组构成,如192.168.0.1就是一个IP 地址,这种写法叫点分十进制格式。IP 地址由网络地址和主机地址两部分组成,分配给这两部分的位数随地址类(A 类、B 类、C 类等)的不同而不同。网络地址用于路由选择,而主机地址用于在网络或子网内部寻找一个单独的主机。一个IP 地址使得将来自源地址的数据通过路由而传送到目的地址变为可能。
现在有很多计算机都是通过先组建局域网,然后通过交换机和Internet 连接的。然后给每个用户分配固定的IP 地址,由管理中心统一管理,这样为了管理方便就需要使用Mac 地址来标志用户,防止发生混乱,明确责任(比如网络犯罪)。另外IP 地址和Mac 地址是有区别的,虽然他们在局域网中是一一对应的关系。IP 地址是跟据现在的IPv4标准指定的,不受硬件限制比较容易记忆的地址,而Mac 地址却是用网卡的物理地址,多少与硬件有关系,比较难于记忆。
MAC 地址,长度为48位(6个字节),通常表示为12个16进制数,每2个16进制数之间用冒号隔开,如:08:00:20:0A:8C:6D就是一个MAC 地址,其中前6位16进制数08:00:20代表网络硬件制造商的编号,它由IEEE (Istitute of Electrical and Electronics Engineers ,电气与电子工程师协会)分配,而后3位16进制数0A:8C:6D代表该制造商所制造的某个网络产品(如网卡)的系列号。每个网络制造商必须确保它所制造的每个以太网设备都具有相同的前三个字节以及不同的后三个字节。这样就可保证世界上每个以太网设备都具有唯一的MAC 地址。