TCP/IP详解-协议

本书17-23章讲解TCP,为重点。标题用红色字体标明

1.概述

TCP/IP通常被认为是一个四层协议系统,包括:

1.链路层,用于处理物理接口。
2.网络层,处理分组在网络中的活动,如分组的选路。在TCP/IP协议族中,网络层协议包括IP,ICMP(Internet控制报文协议),IGMP(Internet组管理协议)。并不提供可靠性保证。
3.运输层,用于提供两台主机上端到端的通信。在TCP/IP协议族中,包括TCP和UDP,TCP为两台主机提供可靠的数据通讯。UDP并不保证数据报能到达另一端。
4.应用层,处理应用程序细节。应用层不关心数据在网络中的传输活动。

连接网络的途径:

1.网桥,在链路层上对网络进行互联。
2.路由器,在网络层上对网络进行互联。TCP/IP倾向于使用路由器。

TCP/IP的分层

互联网的地址

这里写图片描述

客户-服务器模型

重复型:重复型通过以下步骤进行交互
I1.等待一个客户请求的到来。
I2.处理客户请求。在该状态下不能为其他客户机提供服务。
I3.发送响应给发送请求的客户。
I4.返回I1。

并发型:并发型通过以下步骤进行交互
C1.等待一个客户请求的到来。
C2.启动一个新的服务器来处理。处理结束后终止这个服务器。可为多个客户服务。
C3.返回C1。

一般来说,TCP服务器是并发的,而UDP服务器是重复的,但也存在一些例外。


2.链路层

链路层主要有三个目的:
1.为IP模块发送和接收IP数据报。
2.为ARP模块发送ARP请求和接收ARP应答。
3.为RARP发送RARP请求和接收RARP应答。

SLIP:串行线路IP

SLIP(Serial Line IP)是一种在串行线路上对IP数据报进行封装的简单形式。

SLIP定义的帧格式:

1.IP数据报以称作END(0xc0)的特殊字符结束。为防止数据报到来前的噪声被当做数据报,大多数数据报的开始处也传一个END字符。
2.如IP数据报中某个字符为END(0xc0),那么为避免误读将会以0xdb和0xdc两个字节取代0xc0。0xdb这个特殊字符被称作SLIP的ESC字符。
3.若IP数据报中某个字符为SLIP的ESC字符(0xdb),就用0xdb和0xdd取代他。
这里写图片描述

SLIP的缺陷:

1.每一端必须知道对方的IP地址。没有办法把本端的IP地址通知给另一端。
2.数据帧中没有类型字段(类似于以太网中的类型字段)。如果一条串行线路用于SLIP, 那么它不能同时使用其他协议。
3.SLIP没有在数据帧中加上检验和(类似于以太网中的 CRC字段)。如果SLIP传输的报文被线路噪声影响而发生错误,只能通过上层协议来发现(另一种方法是,新型的调制解调器可以检测并纠正错误报文)。这样,上层协议提供某种形式的CRC就显得很重要。

PPP:点对点协议

PPP点对点协议修改了SLIP协议中的所有缺陷。

PPP包括以下三个部分:

1.在串行链路上封装IP数据报的方法。PPP既支持数据为8位和无奇偶检验的异步模式 (如大多数计算机上都普遍存在的串行接口),还支持面向比特的同步链接。
2.建立,配置及测试数据链路的链路控制协议(LCP:Link Control Protocol)。它允许通 信双方进行协商,以确定不同的选项。
3.针对不同网络层协议的网络控制协议(NCP:Network Control Protocol)体系。

PPP定义的帧格式:

1.每一帧都以标志字符0x7e开始和结束。紧接着是一个地址字节,值始终是0xff,然后是一 个值为0x03的控制字节。
2.接下来是协议字段,类似于以太网中类型字段的功能。不同值代表信息字段为不同的东西,详情看下图。
3.信息字段。类型由协议字段表示。
4.CRC字段。用于检测数据帧中的错误。
这里写图片描述
由于标志字符的值是0x7e,因此当该字符出现在信息字段中时, P P P需要对它进行转义。转移方法看书19页。

PPP对比SLIP的优点

1.PPP支持在单根串行线路上运行多种协议, 不只是IP协议。
2.每一帧都有循环冗余检验。
3.通信双方可以进行IP地址的动态协商(使用IP网络控制协议)
4.与CSLIP类似,对TCP和I P报文首部进行压缩.
5.链路控制协议可以 对多个数据链路选项进行设置。为这些优点付出的代价是在每一帧的首部增加 3个字节,当建立链路时要发送几帧协商数据,以及更为复杂的实现。

环回接口

环回接口允许运行在同一主机上的服务器与客户通过TCP/IP通信。ip地址为127.0.0.1命名为localhost。


3.IP网际协议

IP协议的特性

1.不可靠,不保证IP数据报能达到目的地,如果发生某种错误,IP协议将丢弃该数据报。
2.无连接,各个数据报相互独立,不保证接收顺序,或使用相同线路。

IP首部

这里写图片描述
1.版本:IP协议的版本号,目前是4,也称IPv4
2.首部长度。指IP数据报首部的长度为多少个32bit。由于其占4bit,所以IP数据报首部最长60字节( (2^5 - 1) * 32 / 8 = 60)。
3.服务类型(TOS):包括一个3bit的优先权子字段(现在已被忽略),4 bit的TOS子字段和1bit未用位但必须置0。4bit的TOS分别代表:最小时延、最大吞吐量、最高可靠性和最小费用。4bit中只能置其中1bit。如果所有4bit均为0,那么就意味着是一般服务。
4.总长度:以字节表示的IP数据报总长度。由于字段长16bit,所以IP数据报长度最多为65535字节((2^17 - 1)).
5.标识:标识数据报的ID,通常发送一份报文就会+1,溢出清0。
6.标志和片偏移:在11章讨论。
7.TTL生存时间:数据报可经过的最多路由器数。
8.协议:识别哪个协议向IP传送数据。
9.首部检验和:对IP数据报的首部(不算数据)进行检验。首先把检验和字段置为0。然后,对首部中每个16bit 进行二进制反码求和(整个首部看成是由一串 16 bit的字组成),结果存在检验和字段中。当收到一份IP数据报后,同样对首部中每个 16 bit进行二进制反码的求和。由于接收方在计算过程中包含了发送方存在首部中的检验和,因此,如果首部在传输过程中没有发生任何差错, 那么接收方计算的结果应该为全 1。如果结果不是全1(即检验和错误),那么I P就丢弃收到的数据报。但是不生成差错报文,由上层去发现丢失的数据报并进行重传。
10.源地址和目的地址如字面意思。

IP路由选择

如果目的主机与源主机直接相 连(如点对点链路)或都在一个共享网络上(以太网或令牌环网),那么IP数据报就直接送到目的主机上。否则,主机把数据报发往一默认的路由器上,由路由器来转发该数据报。大多数的主机都是采用这种简单机制。

路由表中包含:

1.目的IP地址。它既可以是一个完整的主机地址,也可以是一个网络地址,由该表目中的标志字段来指定(如下所述)。主机地址有一个非0的主机号,以指定某一特定的主机,而网络地址中的主机号为0,以指定网络中的所有主机(如以太网,令牌环网)。
2.下一跳路由器IP地址。
3.标志,其中一个标志指明目的 I P地址是网络地址还是主机地址,另一个标志指明下一 站路由器是否为真正的下一站路由器,还是一个直接相连的接口
4.为数据报的传输指定一个网络接口。

IP路由选择主要完成以下这些功能:

1.搜索路由表,寻找能与目的IP地址完全匹配的表目(网络号和主机号都要匹配)。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标 志字段的值)。
2.搜索路由表,寻找能与目的网络号相匹配的表目。如果找到,则把报文发送给该表目指定的下一站路由器或直接连接的网络接口(取决于标志字段的值)。目的网络上的所有主机都可以通过这个表目来处置。例如,一个以太网上的所有主机都是通过这种表目进行寻径的。 这种搜索网络的匹配方法必须考虑可能的子网掩码。
3.搜索路由表,寻找标为“默认(default)”的表目。如果找到,则把报文发送给该表目指定的下一站路由器。
如果上面这些步骤都没有成功,那么该数据报就不能被传送。如果不能传送的数据报来自本机,那么一般会向生成数据报的应用程序返回一个“主机不可达”或“网络不可达”的错误。 完整主机地址匹配在网络号匹配之前执行。只有当它们都失败后才选择默认路由。
为一个网络指定一个路由器,而不必为每个主机指定一个路由器,这是IP路由选择机制的另一个基本特性。这样做可以极大地缩小路由表的规模。


4.ARP:地址解析协议

ARP为IP地址到对应的硬件地址之间提供动态映射,解决同一局域网上的主机或路由器的IP地址和硬件地址的映射问题。ARP在高速缓存中存放一个从IP地址到硬件地址的映射表,并经常动态更新。

ARP工作方式

ARP发送一份称作ARP请求的以太网数据帧给以太网上的每个主机。这个过程称作广播,ARP请求数据帧中包含目的主机的IP地址,其意思是“如果你是这个IP地址的拥有者,请回答你的硬件地址。”
目的主机的ARP层收到这份广播报文后,识别出这是发送端在寻问它的IP地址,于是发送一个ARP应答。这个ARP应答包含IP地址及对应的硬件地址。
发送方收到ARP响应分组后在ARP高速缓存中写入响应分组包含的IP地址和硬件地址。

ARP的分组格式

这里写图片描述
协议内容说明查看40页

对不存在主机的ARP请求

指定一个不存在的主机号,但其网络号和子网号对应的网络存在。ARP将会多次发送请求,大

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值