TCP/IP详解 第一章 概述

一、基础概念

互联网、因特网、万维网的概念与区别

  • 互联网:彼此通信的设备组成的网络叫互联网
  • 因特网:一个遍布全球数十亿人口的广域网
  • 万维网:一个由许多互相链接的超文本组成的系统(www)
    范围是 互联网>因特网>万维网 其次本身概念也有所区别

1 分组、链接、数据报

一开始互相通讯是通过物理方式实现的,扯电话线到指定地点 通讯时需要先呼叫链接中心进行转接,构建物理链路进行通讯。之后逐渐数字化,大幅提高了通讯的可靠性与性能

分组

分组交换的概念出现于20世纪60年代,在分组交换中,让包含一定字节数的数字信息块独立通过网络,这些分组在达到目的地的过程中需要在交换设备之间传输。
优点

  • 网络更加由弹性,设计者无需担心网络收到物理攻击
  • 可以基于统计复用更好的利用网络与交换设备

统计复用方式
通过简单的FIFO 就可以实现交换设备的充分利用 之前需要保持某特定链接 由于分组变为分组数据包排队发送给应该到达的地点。
缺点是这种方式可能造成阻塞,增加了不可预测性
替代性方案:时分复用(TDM)通常是在每个链接上为数据保留一定量的时间或其他资源,增加可预测性,但同时保留的资源会让其无法充分利用网络带宽。

连接

虚电路(VC)

概念:顾名思义,就是虚拟的电路链接,在在两个节点或应用进程之间建立起一个逻辑上的连接或虚电路后,就可以在两个节点之间依次发送每一个分组。

特点:接收端收到分组的顺序必然与发送端的发送顺序一致,因此接收端无须负责在接收分组后重新进行排序。

后续:由于其不依赖物理的电路交换机,是流行的X.25协议的基础 之后被帧中继大规模取代,最终被数字用户线(DSL)电缆调制解调器取代

数据报

一种面向无连接的思想,不再将链路存储在交换设备中,而是让分组数据本身持有数据的目的地以及和其它数据之间的关系,这种模式的分组数据被称为数据报,其中数据的目的地及与其他数据关系放在报头。

EX:消息边界:一个应用将多个数据块发送之后,通讯协议是否保留这些数据块的开始结束信息,依据是否保留消息边界会出现按发送数据块大小进行读取或者是按固定大小进行读取两种读取形式(保留了边界就可以发不同大小的包 按不同大小的读,不保留就只能按固定大小一次一次的读)

2 端到端与命运共享

端到端

端到端论点认为:只有涉及到了通信系统应用程序或者最终用户,其正确性和完整性才可能得到真正的实现。也就是不可能通过数据连接实现完美的通信功能,应当将其放在端主机的应用程序中实现(例如保证数据不丢失、发送速率、加密、交付确认等)。但是底层可以提供方便端系统工作的功能,从而改善性能。

命运共享

应用程序与底层通讯一起保证数据的原则,命运共享建议将所有必要的状态放在通信端点,用以维护一个虚拟的链接。
由于这个原因,在通信失效的情况也会导致一个或多个端点失效,命运共享的设计使得即便网络链接在一段时间内失效 也能通过虚拟链接(如:TCP实现)的方式维持活动。

3 差错控制与流量控制

差错控制

硬件问题、传输问题、数据被篡改问题、无线网范围问题…出于各种原因总会出现数据错误或者丢失的情况,对其处理方式就是差错控制。
显然,依据上述端到端和命运共享的论点,通常建议在应用程序附近或内部实现差错控制。
当差错出现在分组时,对于顺序要求严格的应用交付可以使用重新发送的方式,但一个可靠的文件传输可以不关心交付顺序,只要保证最终将数据无差错交付即可,可以按照原来的数据重新组合。
帧中继和Internet协议采用尽力而为的交付服务,其不会花费很大的努力去确保数据没有差错的情况下交付,而是收到数据后通过差错检验码来校验(例如MD5之类),对于出错的数据报仅做丢弃处理。

流量控制

以上述差错控制的方式来看,发送方会以超过接受方处理的能力生成信息,故需要对发送方进行流量控制,TCP会处理这样的问题,和命运共享原则一样,流量控制也是在端上完成的。后续介绍TCP的实现时会详细讨论

二、设计实现

1 分层

分层将通信分成多个方面,让开发人员只关心其中某个方面,现在OSI模型建议分为7层,但是实际上认为TCP/IP体系结构包含5层(5层体系下是七层上面的会话层表示层和应用层合并为应用层)
7层结构

  • 物理层:定义了某种通讯介质(如光纤电缆,电话线)传输数字信息的方法
  • 链路层:共享相同介质的邻居(一条网线链接两个电脑)建立链接的协议或方法,当超过一个邻居时被称为多接入网络(Wifi、以太网等)协议用以协调多个端点在任何时间访问共享介质。
  • 网络层:经过不同类型链路层进行多跳通讯的方法,包含主机地址方案和路由算法(IP数据报)
  • 传输层:提供了会话之间的数据流,允许相同计算机系统多个应用程序之间连接或关联的方法(TCP)
  • 会话层:会话表示正在运行的应用,可以提供连接初始化,关闭连接,增加检查点等
  • 表示层:负责信息的格式转化和标准编码
  • 应用层:应用通常自己实现自己的应用层协议,是功能开发和部署的地方

2 分层中的复用、分解、封装

每一层协议都有自己的协议数据单元(PDU),从应用层到物理层层层封装,每一层都将上一层的数据视为无需解释的数据包裹在自己的结构中(每一层套一个header)并且每一层都有自己的类型标识符用以标识数据,在接收端再层层分解,变回期望的数据。
理想状态是设备端拥有全部层级 交换机(网桥)仅实现到链路层,路由器仅实现到网络层,但是虽然期望是这样,对于现在路由器和交换机通常会实现更多协议,用以管理及提供服务(远程登陆之类),为实现这点通常也需要实现传输层和应用层(指的是7层中的上三层)协议

EX:路由器是需要将分组从一个接口转发到另一个接口的,通常用于多个网络之间的连接点,无法进行接口转发仅进行链路扩展的不能称为路由器

由于层层封装复用分解,上层实际不需要关注下层的内容,隐藏了网络拓扑和传输过程。

三、TCP/IP协议结构和协议

1 ARPANET参考模型

分层

  • 链路层(辅助):再链路层和网络层之间,用以处理多接入链路层和网络层映射关系,如ARP
  • 网络层:给数据报提供路由,如IPv4和IPv6
  • 网络层(辅助):介于网络层和传输层之间,协助完成网络层设置和管理,如ICMP、IGMP、IPsec
  • 传输层:应用程序端口之间的数据交换,如TCP、UDP、SCTP、DCCP
  • 应用层:Internet兼容的任何应用 如HTTP、DNS、DHCP

ARP:地址解析协议,为IPv4的专用协议,用于多链路(以太网、Wifi)ip映射程设备的物理地址,IPv6地址映射功能作为ICMPv6的一部分不在这里。

IP协议:网络层最重要的协议,用于网络寻址,通常说的分组就是指网络层IP协议的PUD,也成为ip数据报(v4大小64K,v6大小4),在发送给链路层的时候需要进行缩小处理,这个过程称之为分片,分片后的数据作为链路层的PUD也被称作帧。IP数据报中包含了发送方和接收方的IP地址信息(IPv4为32位 IPv6为128位)用以路由器进行转发决策。

ICMP协议:Internet控制消息协议,是IP协议的辅助协议,用于与其他主机或路由器的网络层交换信息使用。分为ICMPv4和ICMPv6,对应了IPv4和IPv6,其中ICMPv6非常复杂,他包含了地址自动配置和邻居发现等功能,取代了IPv4下链路辅助层的ARP协议。

IGMP协议:Internet组管理协议,也是IP协议的辅助协议,它采用组播(源主机只发送一份数据,数据的目的地址是组播组地址,这样,凡是属于该组的成员,都可以接收到一份原主机发送的数据的拷贝)和交付的方式来管理作为组播成员的主机。

TCP协议:传输控制协议,最广泛使用的传输层协议,会处理网络层不关心的数据丢失重复重排序等问题。面向连接(VC)且不保存消息边界。TCP可以提供可靠的数据流传输,让应用层无需关心传输过程,TCP协议下的传输层PUD被称为TCP段。

UDP协议:用户数据报协议,仅提供比IP协议稍多的功能,保留消息边界但不强制实现速率控制和差错控制。即它允许信息从一台主机向另一台主机发送信息但不保证数据报能达到另一端,所有的可靠性服务均交由应用层实现。实际上UDP只是提供了一套端口号用于复用分解校验数据的完整性。

DCCP协议:数据报拥塞控制协议,较新使用场景较少的传输层协议,提供了介于TCP和UDP之间的服务。面向连接,不可靠的数据报交换,但具有拥塞控制功能(控制流量速率)

SCTP:流控制传输协议,也是较新使用较少的传输层协议,提供类似于TCP的可靠交付但不要求严格保持数据顺序,它允许多个数据流在同一个连接上传输,并提供了一个消息抽象。

2 端口号

一个16位的非负整数(0-65535)每一个ip地址都有这么多端口号,大多数情况下每一个传输协议都可以独立使用这些端口(不同协议何以使用同一个端口号 最终区分是协议号-端口号唯一确定由哪个程序接收)
端口号包含熟知端口号(0-1023)注册端口号(1024-49151)动态/私有端口号(49152-65535)
熟知端口号是众所周知的端口号,例如:安全外壳协议(SSH 端口号22)、FTP(端口号20和21)、Telnet远程终端协议(端口23)、电子邮件(SMTP 端口号25)、域名系统(DNS 端口号53)、超文本传输协议(HTTP HTTPS 端口号 80 443)交互邮件访问协议(IMAP IMAPS端口号143 993)、简单网络管理协议(SNMP 端口号161 162)轻量级目录访问协议(LDAP 端口号389)
注册端口号是提供给特殊权限的客户机或服务器,由IANA维护此特定用途的注册表,一般开发新应用应避免使用(其实大部分开发都在用这些,当前注册的服务端口只到8000左右,使用之后的端口一般不会冲突)
动态端口号不受监管,基本只用于短期使用,新开发应用的端口号建议放在此范围内
EX:大部分熟知端口号都是奇数,原因是这些端口号都是由更早的NCP端口号派生来的 而之前不支持全双工,输入和输出不能用一个端口所以以成对的形式提供。

3 名称、地址、DNS

每个计算机和路由器的链路层至少需要由一个IP地址,在TCP/IP协议中 DNS是一个分布式数据库,提供主机域名和IP地址的映射,因为IP地址不方便记忆,通常用户是通过域名来使用的。

四、内联网和外联网

因特网:上述描述过,现最大的网络集合
内联网:用以描述专用互联网的术语,通常由一个商业机构或者企业运行提供给特定企业内用户使用,用户可以通过虚拟专用网(VPN)连接到内联网。
外联网:公司或者企业希望提供一个网络,其中包含可供合作伙伴或其他公司访问的服务器,涉及到VPN的网络被称为外联网。
从技术上说 因特网 内联网和外联网没有本质区别 只是使用方式和管理策略不同的专业术语。

五、设计应用

1 客户机、服务器

大多数网络应用被设置位客户机服务器形式,一边提供服务一边使用服务。
服务器分两类 迭代和并发,迭代就是常见的阻塞,接受请求 处理请求 返回请求
并发就是常见的异步,接收请求,开启新的服务器处理请求,等待新请求到来,新服务器处理完之后销毁,将结果返回老服务器返回客户端。

2 对等

也可以说是P2P,其最大的特点是没有客户端服务器之分,或者同时接受请求和响应请求(即是客户端又是服务器)
常见的是BitTorrent(磁力链接下载资源)
P2P一个难题是如何发现服务,一个对等方如何在一个网络中寻找所需要的数据或者服务的其他对等方,通常使用一个引导程序来处理,在最开始时就配置好他所需要的对等放的地址和端口号。

3 应用程序编程接口

无论何种形式的应用设计,都需要表述其所需要的网络操作,现在编程系统一般时由主机的操作系统提供的一个网络应用程序编程接口(API)来实现。

六、与Internet体系结构相关的攻击

原因:Internet交付IP数据报是基于目的IP地址,因此恶意用户可以IP数据报的源地址字段,即:生成的数据报被交付到目的地很难确定其真实来源,或者说 无法确定真实来源。这种行为称为欺骗。
欺骗可以和Internet中各种攻击行为结合,如拒绝访问(Dos)攻击,通过发送大量IP数据报拖垮服务器,让其处理无用的数据报,从而使正常用户访问困难,因为通常需要很多计算机来进行发送,组成一个分布式Dos攻击(DDos)
另一种攻击时未授权访问攻击,其内容时以未授权的方式来访问信息资源,实现上主要利用了各种协议实现上的漏洞通过协议错误操控计算机,或者代理冒充合法用户访问计算机。最终将操控的计算机以一种分布协同的方式使用(使用其算力或者恶意攻击其他系统以获取利益)
最初的Internet体系没有设计任何加密,恶意用户仅通过分析IP数据报就可以获取大量私人信息,随着加密技术完善之后,这种现象显著减少,但是旧有的设计不当的协议在窃听攻击面前依旧很脆弱,因此尽量使用成熟的协议。
虽然可以在某层(Wifi网络的链路层)启用加密,但是只有在主机到主机上的加密才能保护数据穿过多个网段。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值