tcp-ip

一,tcp/ip概述

任何T C P / I P实现所提供的服务都用知名的1~1 0 2 3之间的端
口号。这些知名端口号由I n t e r n e t号分配机构( Internet Assigned Numbers Authority, IANA)
来管理。

到1 9 9 2年为止,知名端口号介于1~2 5 5之间。2 5 6~1 0 2 3之间的端口号通常都是由
U n i x系统占用,以提供一些特定的U n i x服务—也就是说,提供一些只有U n i x系统才
有的、而其他操作系统可能不提供的服务。现在IANA管理1~1023之间所有的端口号。

大多数T C P / I P实现给临时端口分配1 0 2 4~5 0 0 0之间的端口号

大于5 0 0 0的端口号是为其他服务器预留的( I n t e r n e t上并不常用的服务)。

tcp-ip是一组不同层次上多种协议的组合。通常被认为是四个层次:

tcp-ip模型
应用层 telnet,ftp和smtp等
运输层 tcp和udp
网络层 ip,icmp,igmp
链路层 接口卡和设备驱动程序
ip地址分类
A类 0.0.0.0~127.255.255.255
B类 128.0.0.0~191.255.255.255
C类 192.0.0.0~223.255.255.255
D类 224.0.0.0~239.255.255.255
E类 240.0.0.0~247.255.255.255
   

A类的默认子网掩码 255.0.0.0     一个子网最多可以容纳2的24次方-2即16777216-2台电脑
B类的默认子网掩码 255.255.0.0    一个子网最多可以容纳2的16次方-2即65536-2台电脑
C类的默认子网掩码 255.255.255.0   一个子网最多可以容纳2的8次方-2即256-2=254台电脑

二, 链路层

链路层主要有三个目的:1, 为ip模块传输ip数据报文;2,为arp模块传输arp请求和应答;3,为rarp模块传输请求和应答。

IEEE802帧格式和以太网帧格式如图:IEEE802帧格式-以太网帧格式.png所示。

常用的两种链路层协议时slip(Serial Line IP)和ppp点对点协议。

大多数实现都有环回接口。

路径MTU。

三,网路层-ip协议

I P是T C P / I P协议族中最为核心的协议。所有的T C P、U D P、I C M P及I G M P数据都以I P数据
报格式传输(见图  IP数据报格式及首部中的各字段.png)。

ip的不可靠( u n r e l i a b l e)的意思是它不能保证I P数据报能成功地到达目的地。I P仅提供最好
的传输服务。如果发生某种错误时,如某个路由器暂时用完了缓冲区, I P有一个简单的错误
处理算法:丢弃该数据报,然后发送I C M P消息报给信源端。任何要求的可靠性必须由上层来
提供(如T C P)。
ip的无连接( c o n n e c t i o n l e s s)这个术语的意思是I P并不维护任何关于后续数据报的状态信息。
每个数据报的处理是相互独立的。这也说明, I P数据报可以不按发送顺序接收。如果一信源
向相同的信宿发送两个连续的数据报(先是A,然后是B),每个数据报都是独立地进行路由
选择,可能选择不同的路线,因此B可能在A到达之前先到达。

 I P路由
选择,主机的路由选择可以非常简单:如果目的主机在直接相连的网络上,那么就把
数据报直接传给目的主机,否则传给默认路由器。
在进行路由选择决策时,主机和路由器都使用路由表。在表中有三种类型的路由:特定
主机型、特定网络型和默认路由型。路由表中的表目具有一定的优先级。在选择路由时,主
机路由优先于网络路由,最后在没有其他可选路由存在时才选择默认路由。
I P路由选择是通过逐跳来实现的。数据报在各站的传输过程中目的I P地址始终不变,但
是封装和目的链路层地址在每一站都可以改变。大多数的主机和许多路由器对于非本地网络
的数据报都使用默认的下一站路由器。
A类和B类地址一般都要进行子网划分。用于子网号的比特数通过子网掩码来指定。

四,网络层-arp协议

 。数据链路如以太网或令牌
环网都有自己的寻址机制(常常为48 bit地址),这是使用数据链路的任何网络层都必须遵从
的。一个网络如以太网可以同时被不同的网络层使用。例如,一组使用T C P / I P协议的主机和
另一组使用某种P C网络软件的主机可以共享相同的电缆。

当一台主机把以太网数据帧发送到位于同一局域网上的另一台主机时,是根据48 bit的以
太网地址来确定目的接口的。设备驱动程序从不检查I P数据报中的目的I P地址。

地址解析为这两种不同的地址形式提供映射: 32 bit的I P
地址和数据链路层使用的任何类型的地址。RFC 826 [Plummer
1 9 8 2 ]是A R P规范描述文档。

如图arp&rarp.png所示.

一个 “% ftp 主机名”  列子的arp过程,如图ftp里面的arp过程.png所示。

点对点链路不使用A R P。当设置这些链路时(一般在引导过程进行),必须告知内核链路每一端的I P地址。

 显示arp高速缓存所有内容.png。

用于以太网的ARP请求或应答分组格式.png(A R P可以用于其他
类型的网络,可以解析I P地址以外的地址。紧跟着帧类型字段的前四个字段指定了最后四个
字段的类型和长度)。

 五,网络层-icmp

I C M P经常被认为是I P层的一个组成部分。它传递差错报文以及其他需要注意的信息。
I C M P报文通常被I P层或更高层协议( T C P或U D P)使用。一些I C M P报文把差错报文返回给
用户进程。

ICMP封装在IP数据报内部.png.

ICMP报文.png.

ICMP报文类型:

六,ping程序

“p i n g”这个名字源于声纳定位操作。P i n g程序由Mike Muuss编写,目的是为了测试另一
台主机是否可达。该程序发送一份I C M P回显请求报文给主机,并等待返回I C M P回显应答。

一台主机的可达性可
能不只取决于I P层是否可达,还取决于使用何种协议以及端口号。P i n g程序的运行结果
可能显示某台主机不可达,但我们可以用Te l n e t远程登录到该台主机的2 5号端口(邮件
服务器)。

p i n g程序是对两个T C P / I P系统连通性进行测试的基本工具。它只利用I C M P回显请求和
回显应答报文,而不用经过传输层( T C P / U D P)。P i n g服务器一般在内核中实现I C M P的功能。

七, Traceroute程序

下Tr a c e r o u t e程序的操作过程。它发送一份T T L字段为1的I P数据报给
目的主机。处理这份数据报的第一个路由器将T T L值减1,丢弃该数据报,并发回一份超时
I C M P报文。这样就得到了该路径中的第一个路由器的地址。然后Tr a c e r o u t e程序发送一份
T T L值为2的数据报,这样我们就可以得到第二个路由器的地址。继续这个过程直至该数据报
到达目的主机。但是目的主机哪怕接收到T T L值为1的I P数据报,也不会丢弃该数据报并产生
一份超时I C M P报文,这是因为数据报已经到达其最终目的地。那么我们该如何判断是否已经
到达目的主机了呢?
Tr a c e r o u t e程序发送一份U D P数据报给目的主机,但它选择一个不可能的值作为U D P端口
号(大于30 000),使目的主机的任何一个应用程序都不可能使用该端口。因为,当该数据报
到达时,将使目的主机的U D P模块产生一份“端口不可达”错误(见6 . 5节)的I C M P报文。
这样,Tr a c e r o u t e程序所要做的就是区分接收到的I C M P报文是超时还是端口不可达,以判断
什么时候结束。

八,路由

路由两要素:路径选择,数据转发。

路由算法设计目标:

最优性 - Optimality
简单性 - Simplicity
强壮性 - Robustness
快速收敛 - Rapid convergence
灵活性 - Flexibility

九,ip选路

IP层工作流程.png。

I P层进行的选路实际上是一种选路机制,它搜索路由表并决定向哪个网络接口发送分组。
这区别于选路策略,它只是一组决定把哪些路由放入路由表的规则。I P执行选路机制,而路
由守护程序则一般提供选路策略。

猜你喜欢

转载自michaelzqm.iteye.com/blog/937530