vlambda博客
学习文章列表

TCP/IP协议架构介绍

TCP/IP协议架构是通信协议的统称,常被称为TCP/IP协议族,包括两个核心协议:TCP(传输控制协议)IP(网际协议),TCP/IP协议的开发始于20世纪60年代后期,早于OSI参考模型,由于TCP/IP模型更加简洁易用,目前大多采用TCP/IP模型。一共包括4层:应用层、传输层、网络层和网络接口层。

OSI模型与TCP/IP模型:

物理层

负责0、1 比特流(0/1序列)与电压的高低之间的转换

数据的单位称为比特(bit)

属于物理层定义的典型规范代表包括:EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45、fddi令牌环网等OSI采纳了各种现成的协议,其中有RS-232、RS-449、X.21、V.35、ISDN、以及FDDI、IEEE802.3、IEEE802.4、和IEEE802.5的物理层协议

数据链路层

负责物理层面上的互联的、节点间的通信传输(例如一个以太网项链的2个节点之间的通信);

  • 透明传输:零比特填充、转义字符。

  • 可靠传输:在出错率很低的链路上很少用,但是无线链路WLAN会保证可靠传输。

  • 差错检测(CRC):接收者检测错误,如果发现差错,丢弃该帧。

主要协议

①点对点协议PPP(Point to Point Protocol)

②以太网(Ethernet)

③高级数据链路控制协议HDLC(High-Level Data Link Control)

④ 帧中继(Frame Relay)

⑤异步传输模式ATM(Asynchronous Transfer Mode)

MAC地址

TCP/IP协议架构介绍

  • 组织唯一标识符(OUI)由IEEE(电气和电子工程师协会)分配给厂商

MAC帧

TCP/IP协议架构介绍

PPPoE 协议

基于以太网的点对点通讯协议PPPOE(Point to Point Protocol over Ethernet)

  • 单纯的以太网没有验证功能,也没有建立和断开连接的处理,因此无法按时计费。

  • 如果采用PPPoE管理以太网连接,就可以利用PPP的验证等功能使各家ISP可以有效地管理终端用户的使用。

  • 分成发现阶段(Discorvery)和PPP会话阶段(Session)

报文的以太网类型:

  • 当值为0x8863时表示Discovery阶段或Terminate阶段。

  • 当值为0x8864时表示Session阶段。

PPPoE拨号过程

TCP/IP协议架构介绍

PPPoE Discovery发现阶段

  1. PPPoE服务器收到PADI包后,返回PADO (PPPOE Active Discovery Offer) 作为回应;

  2. 用户主机从收到的多个PADO包中,根据其名称类型名或者服务名,选择一个合适的接入设备,然后发送PADR (PPPOE Active Discovery Request) 包,另外如果一个用户主机在发出PADI后在规定时间内没有收到PADO,则会重发PADI,并且加倍等待时间

  3. PPPoE服务器收到PADR包后,返回PADS (PPPOE Active Discovery Session-confirmation) 包,其中包含了一个唯一session ID,双方进入PPP会话阶段。

code 报文

0x09 PADI PPPoE Active Discovery Initiation PPPoE发现初始报文
0x07 PADO PPPoE Active Discovery Offer PPPoE发现提供报文
0x19 PADR PPPoE Active Discovery Request PPPoE发现请求报文
0x65 PADS PPPoE Active Discovery Sessionconfirmation PPPoE发现会话确认报文
0xa7 PADT PPPoE Active Discovery Terminate PPPoE发现终止报文

Discovery阶段:以太网帧的ETHER_TYPE域都设置为 0x8863

TCP/IP协议架构介绍

PPPoE Session 会话阶段

1 LCP协商阶段(Link Control Protocol)链路协商

  • LCP用于建立、拆除和监控PPP数据链路

  • 还用于链路层参数的协商,如MRU、验证方式

协商双方互相发送一个LCP Config-Request报文,确认收到的Config-Request报文中的协商选项,根据这些选项的支持与接受情况,做出适当的回应。若两端都回应了Config-ACK,则标志LCP链路建立成功,否则会继续发送Request报文,直到对端回应了ACK报文为止。

TCP/IP协议架构介绍

2 认证阶段

会话双方通过LCP协商好的认证方法进行认证,如果认证通过了,才可以进行下面的网络层的协商。认证过程在链路协商结束后就进行。

  • PAP(Password Authentication Protocol,口令认证协议)

    PAP为两次握手协议,它通过用户名及口令来对用户进行验证。

  • CHAP(Challenge Handshake Authentication Protocol,质询握手认证协议)

    CHAP为三次握手协议。只在网络上传输用户名,并不传输用户口令,因此它的安全性要比PAP高。

    Md5算法


3 NCP协商阶段

网络层协商:IPCP、BCP、IPv6CP等

  • 用户和接入设备对IP服务阶段的一些要求进行多次协商,以决定双方都能够接收的约定。如:IP业务阶段使用的IP压缩协议等。

  • 双方的协议是通过报文中包含的Option项进行协商的,每一个Option都是一个需要协商的问题。最后双方都需要对方答复Configure_Ack的同意报文。

  • IPCP的协商过程是基于PPP状态机进行协商的。

  • 经过双方协商,通过配置请求、配置确认、配置否认等包文交换配置信息,最终由initial (或closed)状态变为Opened状态

  • IPCP状态变为Opened的条件必须是发送方和接收方都发送和接收过确认报文

  • IPCP协商过程中,协商报文可包含多个选项,即参数。

  • 各个选项的拒绝或否认都不能影响IPCP的UP,IPCP可以无选项协商,无选项协商也同样能够UP。选项有IP Address、网关、掩码等,其中IP Address是最重要的一个选项,有些厂家的实现必须这个选项得到确认,大多数厂家的实现允许这个选项为空。

PPPoE Terminate阶段

  • PPP通信双方可以使用PPP协议自身来结束PPPoE会话

  • 当无法使用PPP协议结束会话时可以使用PADT(PPPoE Active Discovery Terminate)报文。

  • 进入PPPoE Session阶段后,PPPoE Client和PPPoE Server都可以通过发送PADT报文的方式来结束PPPoE连接

  • PADT数据包可以在会话建立以后的任意时刻单播发送。在发送或接收到PADT后,就不允许再使用该会话发送PPP流量了。

网络层

负责寻址路由,还可以实现拥塞控制、网际互连等功能数据的单位称为数据包(packet)-分组,分组指IP数据报既可以是一个IP数据报(IP datagram,也可以是IP数据报的一个片(fragment)。网络层协议的代表包括:IP、IPX、RIP、OSPF等

IP协议

所有的TCP,UDP,IMCP,IGMP的数据都以IP数据格式传输。要注意的是,IP是不可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制,这是上层协议(传输层):TCP或UDP要做的事情。

TCP/IP协议架构介绍

IP数据报首部

TCP/IP协议架构介绍

首部和数据报之和的长度,最大65535,不能超过MTU(即最大传送单元)  

版本:4位,IP协议的版本

首部长度:4位(1个单位表示4个字节)  

区分服务:8位,报文的优先级,获得更好的服务(QoS应用)

总长度:16位

标识:计数器,产生数据报的标识(共有几个数据报)

标志:3位,前两位有意义(MF=1,有分片,MF=0,最后一个分片,DF=0,允许分片)

片偏移:13位,较长的分组在分片后,某片在原分组中的相对位置,以8个字节为偏移单位

生存时间:TTL,数据报在网络中可通过的路由器数的最大值(8位)

协议:8位,指出数据报使用何种协议

首部校验和:16位,只检查数据报首部,不检查数据部分

IP地址

TCP/IP协议架构介绍

192.168.128.10/24

  • 24表示从头数到第几为止属于网络标识(前面24位为网络标识)

    路由器仅根据目的主机所连接的网络号来转发分组(不考虑目的主机号)  

IP地址 地址范围 私有地址 保留地址
A类 0.0.0.0 ~127.255.255.255 10.0.0.0~10.255.255.255 127.0.0.0~127.255.255.255
B类 128.0.0.0~191.255.255.255 172.16.0.0~172.31.255.255 169.254.0.0~169.254.255.255
C类 192.0.0.0~223.255.255.255 192.168.0.0~192.168.255.255
D类 224.0.0.0-239.255.255.255

E类 240.0.0.0~255.255.255.255

  • 224. 0.0.1 代表“该子网内的所有主机”,用在IGMP的查询报文

  • 224.0.0.2 代表“该子网内的所有路由器组”

  • 224.0.1.1 用作网络时间协议NTP

  • 224.0.0.9 用作RIP-2

  • 224.0.1.2 用作SGI公司的dogfight应用

  • 本地广播:在本网络内的广播

  • 直接广播:不同网络之间的广播

net-id host-id 源地址使用 目的地址使用 说明
0 0 可以 不可 本网络本主机(DHCP协议)
0 host-id 可以 不可 本网络的某个主机(host-id)
全1 全1 不可 可以 广播地址(在本网络广播,即路由器不转发)
net-id 全1 不可 可以 广播地址(对net-id上的所有主机进行广播)
127 非全0或全1的任何数 可以 可以 环回地址:本主机进程之间的通信

子网划分

数据报到达路由器后,路由器通过子网掩码来确定子网,将数据转发到子网到达目的主机

TCP/IP协议架构介绍

为了便于查找路由表,不划分子网时也使用子网掩码

ARP

TCP/IP协议架构介绍

ARP报文字段

TCP/IP协议架构介绍

  • 以太网帧类型:0x0806

  • 操作字段:指出四种操作类型,ARP请求(值为1)、ARP应答(值为2)、RARP请求(值为3)和RARP应答(值为4)

ARP请求响应报文

1 ARP request(ARP请求)

TCP/IP协议架构介绍

2 ARP replay(ARP响应)

TCP/IP协议架构介绍

ARP缓存表

  • 每执行一次ARP,其对应的缓存内容都会被清除。高速缓存中每一项的生存时间一般为20分钟

RARP协议

  • RARP分组的格式与ARP分组基本一致。主要的差别是RARP请求或应答的帧类型代码为0x8035而且RARP请求的操作代码为3,应答操作代码为4

  • ARP,RARP请求以广播方式传送,应答一般是单播(unicast)传送的

ICMP协议

ICMP协议(Internet Control Message Protocol,网际控制报文协议)

IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成。其中一个重要的模块就是ICMP(网络控制报文)协议。ICMP不是高层协议,而是IP层的协议。当传送IP数据包发生错误。比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机。给主机一个处理错误的机会

ICMP报文是在IP数据报内部被传输的

ping www.baidu.com
tracert www.baidu.com  # 侦测主机到目的主机之间所经路由情况

ICMP报文

TCP/IP协议架构介绍

不同类型由报文中的类型字段和代码字段来共同决定

查询报文类型8 代码0:请求回显(ping请求)

TCP/IP协议架构介绍

响应报文类型0 代码0:回显应答(Ping应答)

TCP/IP协议架构介绍

  • 0 回送应答(Echo Reply)

  • 3 目标不可达(Destination Unreachable)

  • 4 原点抑制(Source Quench)

  • 5 重定向或改变路由(Redirect)

  • 8 回送请求(Echo Request)

  • 9 路由器公告(Router Advertisement)

  • 10 路由器请求(Router Solicitation)

  • 11 超时(Time Exceeded)

IGMP协议

IGMP协议(Internet Group Management Protocol,网际组管理协议),用于主机与路由器之间交互信息,IGMP有固定的报文长度,没有可选数据

  • 所有要加入组播组的主机和所有连接到有组播主机的子网中的路由器都需支持IGMP协议

  • IGMP消息不能被路由器转发,只限制在本地网络内

  • IGMP报文的TTL值始终为1

IGMP版本

  • IGMP的版本目前有V1/V2/V3三种RFC 1112 -- IGMPv1RFC 2236 -- IGMPv2RFC 3376 -- IGMPv3


IGMPv1 IGMPv2 IGMPv3
查询器选举 依靠上层路由协议 自己选举 自己选举
成员离开方式 默默离开 主动发出离开报文 主动发出离开报文
特定组查询 不支持 支持 支持
指定源、组加入 不支持 不支持 支持

多播路由器

多播路由器使用IGMP报文来记录与该路由器相连网络中组成员的变化情况。使用规则如下:1)  当第一个进程加入一个组时,主机就发送一个IGMP报告。如果一个主机的多个进程加入同一组,只发送一个IGMP报告。这个报告被发送到进程加入组所在的同一接口上。

2) 进程离开一个组时,主机不发送IGMP报告,即便是组中的最后一个进程离开。主机知道在确定的组中已不再有组成员后,在随后收到的IGMP查询中就不再发送报告报文。

4) 主机通过发送IGMP报告来响应一个IGMP查询,对每个至少还包含一个进程的组均要发回IGMP报告。

IGMP 报文

TCP/IP协议架构介绍

  • IGMP类型为1说明是由多播路由器发出的查询报文,为2说明是主机发出的报告报文。

  • 检验和的计算和ICMP协议相同。

IGMPv1的查询与响应过程如下:

  • 经过查询/响应过程后,IGMP路由器了解到本网络内存在组播组G对应的接收者,生成(*,G)组播转发表项并依此作为组播信息的转发依据。(*表示组播组成员,G表示某个组播组)。

OSPF

OSPF(Open Shortest Path First开放式最短路径优先)  

  • 是一个内部网关协议(Interior Gateway Protocol,简称IGP)  

  • 是目前广泛使用的一种动态路由协议,属于链路状态路由协议,运作于自治系统内部    

  • 著名的迪克斯加算法被用来计算最短路径树

  • OSPF支持负载均衡和基于服务类型的选路

  • 也支持多种路由形式,如特定主机路由和子网路由等。 

RIP  

RIP(Routing Information Protocol, 路由信息协议)

  • 是一种内部网关协议(IGP),是一种动态路由选择协议,用于自治系统 (autonomous system,AS)   内的路由信息的传递

  • RIP协议基于距离矢量算法(DistanceVectorAlgorithms)

传输层

传输层主要为两台主机上的应用程序提供端到端的通信。

  • 是唯一负责总体的数据传输数据控制的一层;

  • 数据的单位称为数据段(segment)

  • TCP报文段(TCP segment

  • UDP数据报(User Datagram

主要功能:

①为端到端连接提供传输服务

②这种传输服务分为可靠和不可靠的,其中TCP是典型的可靠传输,而UDP则是不可靠传输

③为端到端连接提供流量控制差错控制服务质量(Quality of Service,QoS)等管理服务

包括的协议如下:

TCP:传输控制协议,传输效率低,可靠性强

UDP:用户数据报协议,适用于传输可靠性要求不高,数据量小的数据(比如QQ:采用的通信协议以UDP为主,辅以TCP协议)

DCCP、SCTP、RTP、RSVP、PPTP等协议

端口号

  • 同一台计算机可以同时运行多个程序:通过端口号来识别正在进行通信的应用程序,并准确的将数据传输

  • 端口号的取值范围在0-65535之间,其中0-1023为知名端口号,1024-65535之间的端口为非知名端口不同的传输层协议可以使用相同的端口号

  • 数据到达IP层后,会先检查IP首部中的协议号,再传给相应协议的模块。如果是TCP则传给TCP模块,如果是UDP则传给UDP模块去做端口号的处理,即使是同一个端口号,由于传输协议是各自独立的进行处理,因此相互之间不会受到影响。

TCP协议和UDP协议  

TCP(Transmission Control Protocol,传输控制协议)

UDP(User Datagram Protocol,用户数据报协议)

TCP和UDP协议特点


TCP UDP
可靠性 可靠 不可靠
连接性 面向连接 无连接
报文 面向字节流 面向报文
效率 传输效率低 传输效率高
双工性 全双工 一对一、一对多、多对一、多对多
流量控制 滑动窗口
拥塞控制 慢开始、拥塞避免、快重传、快恢复
传输速度
应用 SMTP、Telnet、HTTP、FTP、DNS DNS、TFTP、SNMP、NFS

TCP的主要特点是:

1.TCP 是面向连接的传输层协议。

2.TCP 提供可靠交付的服务。

3.TCP是面向字节流

4.提供流量控制,拥塞控制

5.TCP提供全双工通信。每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP连接只能是点对点的(一对一)。

6.首部最低20个字节。

可靠传输:

  1. 应答机制:对方收到消息底层会回复

  2. 超时重传:给多方发送一个数据,如果一段时间内对方没有接收,会隔一段时间给对方再次发送,如果一直没有回复,会认为对方掉线了

  3. 错误校验:如果接收的数据包序号发生了错乱,TCP会自动排序,保证数据的有序性,如果有重复数据包,会删除重复的数据包

  4. 流量控制:数据发送在网卡缓存区达到一定上限,对方不会一直发送数据,需要等待对方接收数据,网卡缓存区有空间再发送,保证网卡缓存不会超出

UDP的主要特点是:

  1. UDP是无连接的,在发送数据之前不需要建立连接,因此减少了靠小和发送数据之前的时延。

  2. UDP使用尽最大努力交付,不保证可靠交付。

  3. UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。

  4. UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。

  5. UDP支持一对一、一对多、多对一和多对多的交互通信。

  6. UDP的首部开销小,只有8个字节,比TCP的20个字节首部要短。

TCP报文格式  

TCP/IP协议架构介绍

源端口和目的端口:各占两个字节,分别表示数据包源端口和目的端口,由此可知,端口号的范围是0-65535。

序号:四个字节,范围是[0,232-1],共232(4294967296)个序号。TCP字节流的起始序号必须在连接建立时设置,首部中的序号字段值则指的是本报文段所发送的数据的第一个字节的序号。

确认号:四个字节,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号=N,则表示到序号N-1为止的所有数据都已正确收到。

数据偏移:占四位,它指出当前TCP报文段的数据起始处距离整个TCP报文段的起始处有多远。

保留:占六位,保留为今后使用,当前应置为0。

控制位:占六位,包含URG,ACK,PSH,RST,SYN和FIN,分别为TCP连接中需要使用的数据位。

窗口:两个字节,窗口值是[0,216-1]之间的整数,窗口指的是发送本报文段一方的接收窗口,作为接收方让发送方设置其发送窗口的依据。

校验和:两个字节,检查范围包括首部和数据这两部分。

紧急指针:两个字节,只有URG=1时才有意义。

选项:长度可变,最长可达40字节,当没有使用选项时,TCP首部长度是20字节

在TCP中,当发送端的数据到达接收端主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答(ACK)。

TCP连接的建立和断开过程

三次握手和四次挥手

建立一个TCP连接需要3个报文段,而关闭TCP连接需要4个报文段。   

TCP/IP协议架构介绍

UDP报文格式

TCP/IP协议架构介绍

源端口号:表示发送端端口号,字段长16位。该字段是可选项,有时可能不会设置源端口号。没有源端口号的时候该字段的值为0,可用于不需要返回的通信中。

目标端口号:表示接收端端口,字段长度16位。

包长度:该字段保存了UDP首部的长度和数据的长度之和,单位为字节。

校验和:校验和是为了提供可靠的UDP首部和数据而设计的。需要把首部和数据部分一起都检验

应用层

数据:报文

FTP

文件传输协议FTP(File Transfer Protocol):TCP2021FTP协议包括两个组成部分:FTP服务器和FTP客户端

FTP传输模式

FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive(也就是PASV,被动方式)。

  • Standard模式:FTP的客户端发送 PORT 命令到FTP服务器

  • Passive模式:FTP的客户端发送 PASV命令到 FTP服务器

  • 默认情况下FTP协议使用TCP端口中的 20和21这两个端口,其中20用于传输数据,21用于传输控制信息

  • 但是,是否使用20作为传输数据的端口与FTP使用的传输模式有关

  • 如果采用主动模式,那么数据传输端口就是20

  • 如果采用被动模式,则具体最终使用哪个端口要服务器端和客户端协商决定

Port

  • FTP 客户端首先和FTP服务器TCP 21端口建立连接,通过这个通道发送命令

  • 客户端需要接收数据的时候在这个通道上发送PORT命令,PORT命令包含了客户端用什么端口接收数据。

  • 在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端指定端口发送数据。

  • FTP server必须和客户端建立一个新的连接用来传送数据

Passive

  • 在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令

  • FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求

  • 客户端连接FTP服务器此端口,通过三次握手建立通道,然后FTP服务器将通过这个端口进行数据的传送。 

很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;

而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。

TFTP

TFTP(Trivial File Transfer Protocol,简单文件传输协议)

端口号 UDP69

TFTP协议支持三种传输模式:

  • netascii:ASCII文本模式

  • octet:二进制模式,每字节8位

  • mail:现在已经不使用

TFTP协议数据包种类

opcode 描述
1 读请求(RRQ)
2 写请求(WRQ)
3 数据(DATA)
4 应答(ACK)
5 错误(ERROR)
6 选项应答(OACK)

TFTP和FTP一个主要的区别就是它没有交互式,且不进行身份验证。

SSH

安全外壳协议SSH( secure shell protocal ):TCP22

  • ftp、pop和telnet在本质上都是不安全的,因为它们在网络上用明文传送口令和数据

  • SSH可以有效防止远程管理过程中的信息泄露问题, 提供了基于内容加密服务

  • SSH传输的数据是经过压缩的,所以可以加快传输的速度。

  • SSH既可以代替Telnet,又可以为FTP、PoP、甚至为PPP提供一个安全的"通道"

口令验证

(1)客户端向远程主机发起登陆链接请求。

(2)远程主机收到用户的登录连接请求,然后把自己的公钥发给客户端。

(3)客户端收到这个公钥,并使用这个公钥,将登录密码加密后,发送到远程主机。

(4)远程主机用自己的私钥,解密登录密码,并验证该密码与当前要登陆的用户密码是否匹配,匹配就同意用户登录。

缺陷:口令验证,主动权在客户端,真正的远程主机可能会被拦截掉,能会有别的服务器伪装真正的服务器,受到“中间人”的攻击。此时客户端收到的密钥是伪装机的,客户端发送加密后的密码后,会被伪装机通过私钥解密,此时伪装机就获取到了真实远程主机的账密,那么真实远程主机的安全就受到了严重威胁。

密钥验证

前提:客户端在本地生成非对称密钥(公钥、私钥)。并且将公钥放到了远程主机的.ssh/authorized_keys文件中。

(1)客户端向远程主机发起登陆连接请求,附带信息备注:网上对于附带信息,我目前看到两个版本,一个是:ip,用户名;一个是:公钥信息。对于第一种,我是肯定不赞同,客户端物理位置不定,Ip会变,而且公钥信息中根本没有IP,用户名等信息,所以用IP和用户名在远程主机中定位公钥肯定不行;第二版本我比较赞同,但是目前还有待验证。

(2)远程主机根据附带的信息定位到客户端对应的公钥,然后生成一个随机串并用该公钥加密,然后将生成的加密串发送给客户端。

(3)客户端收到远程主机送来的加密串,然后用自己的私钥解密,再将解密后的字符串送给远程主机。

(4)远程主机接收到解密后的字符串,然后跟自己最初生成的字符串作比较,一样则校验成功,允许与客户端建立登陆链接。

与第一种级别相比,第二种级别不需要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。但是整个登录的过程可能需要10秒  。

Telnet

远程登录协议Telnet(telecommunication network protocol):

TCP23Telnet 协议是基于网络虚拟终端 NVT(Network Virtual Termina1)的实现

NVT 是虚拟设备,连接双方(客户机和服务器)都必须把它们的物理终端和 NVT 进行相互转换。

实现

整个协议软件分为三个模块,各模块的功能如下:

  1. 与本地用户的输入/输出模块:处理用户输入/输出;

  2. 与远地系统的输入/输出模块:处理与远程系统输入/输出;

  3. TELNET 协议模块:实现 TELNET 协议,维护协议状态机。

Telnet远程登录服务分为以下4个过程:

2)将本地终端上输入的用户名和口令及以后输入的任何命令或字符以NVT(Net Virtual Terminal)格式传送到远程主机。该过程实际上是从本地主机向远程主机发送一个IP数据包;

3)将远程主机输出的NVT格式的数据转化为本地所接受的格式送回本地终端,包括输入命令回显和命令执行结果;

4)最后,本地终端对远程主机进行撤消连接。该过程是撤销一个TCP连接。

telnet 客户机要做两件事:

  • 读取用户在键盘上键入的字符,并通过 tcp 连接把他们发送到远程服务器上

  • 读取从 tcp 连接上收到的字符,并显示在用户的终端上

Telnet 协议的主体由三个部分组成:

  1. 网络虚拟终端(NVT,Network Virtual Terminal);

  2. 操作协商;

  3. 协商有限自动机;

NVT 的组成

网络虚拟终端 NVT 包括两个部分:

  • 输出设备:输出远程数据,一般为显示器

  • 输入设备:本地数据输入在网络虚拟终端 NVT 上传输的数据采用 8bit 字节数据,其中 最高位为 0 的字节用于一般数据,最高位为 1 的字节用于 NVT 命令。

操作协商:

为了实现对多种终端特性的支持,TELNET协议规定在扩展NVT功能时采用协商的机制,只有通信双方通过协商后达成一致的特性才能使用,才能赋予NVT该项特性,这样就可以支持具有不同终端特性的终端设备可以互连,保证他们是工作在他们自己的能力以内。

RDP

远程桌面协议RDP(Remote Desktop Protocol)

是一个多通道(multi-channel)的协议,windows自带的远程桌面mstsc

端口TCP 3389

HTTP

超文本传输协议HTTP(HTTPHyper Text Transfer Protocol):TCP 80

HTTPS端口号:TCP 443

HTTP协议的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器应用:WEB端内容获取(门户网站),在移动互联网的客户端APP

工作原理

HTTP是基于客户/服务器模式,且面向连接的。一次HTTP操作称为一个事务,典型的HTTP事务处理过程如下:

(1)客户与服务器建立连接;建立连接-TCP三次握手

(2)客户向服务器提出请求;发送请求信息

(3)服务器接受请求,并根据请求返回相应的文件作为应答;发送响应信息

(4)客户与服务器关闭连接。关闭连接

客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接(可以大大提高服务器的执行效率)。

HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。

HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。

当用户在一个HTML文档中定义了一个超文本链后,浏览器将通过TCP/IP协议与指定的服务器建立连接。

从技术上讲是客户在一个特定的TCP端口(端口号一般为80)上打开一个套接字。如果服务器一直在这个周知的端口上倾听连接,则该连接便会建立起来。然后客户通过该连接发送一个包含请求方法的请求块。

HTTP规范定义了7种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。

HTTP协议是无状态的和Connection: keep-alive的区别

  • 无状态是指协议对于事务处理没有记忆能力,服务器不知道客户端是什么状态。HTTP是一个无状态的面向连接的协议,

  • 无状态不代表HTTP不能保持TCP连接,更不能代表HTTP使用的是UDP协议(无连接)。

  • 从HTTP/1.1起,默认都开启了Keep-Alive,保持连接特性,简单地说,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。

  • Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。

HTTP报文

TCP/IP协议架构介绍

  1. TCP三次握手建立连接[SYN]—seq:(x=0)[SYN,ACK]—seq:(y=0),ack = x+1 = 1[ACK]—seq=x+1=1,ack=y+1=1

  2. 9.9.9.13 发出HTTP页面和图片请求 No.4GET

  3. 157.255.77.60确认 No.5

  4. 157.255.77.60传输数据 No.6发送状态响应码200 OK

  5. 9.9.9.13确认 No.7...

  6. 关闭连接tcp.flags.fin==1

HTTP请求报文

TCP/IP协议架构介绍

HTTP响应报文

TCP/IP协议架构介绍

DNS

域名

TCP/IP协议架构介绍

级域名(top level domain):

(1) 国家顶级域名

(2) 通用顶级域名

(3) 基础结构域名

阿里云DNS:223.5.5.5,备用,223.6.6.6

老牌DNS:114.114.114.114

谷歌:8.8.8.8

腾讯:119.29.29.29

百度:180.76.76.76

DNS协议

DNS在区域传输的时候使用TCP协议,其他时候使用UDP协议。

DNS区域传输的时候使用TCP协议:

  1. 辅域名服务器会定时(一般3小时)向主域名服务器进行查询以便了解数据是否有变动。如有变动,会执行一次区域传送,进行数据同步。区域传送使用TCP而不是UDP,因为数据同步传送的数据量比一个请求应答的数据量要多得多。

  2. TCP是一种可靠连接,保证了数据的准确性。

域名解析时使用UDP协议:

  • 客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。

  • 理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进行配置的时候,仅支持UDP查询包。

DNS报文

DNS首部12字节

TCP/IP协议架构介绍

DNS query 查询报文

TCP/IP协议架构介绍

DNS response 响应报文

TCP/IP协议架构介绍

DDNS

DHCP

动态主机配置协议DHCP(Dynamic Host Configuration Protocol):UDP67,68

bootps:67

bootpc:68

DHCP过程

TCP/IP协议架构介绍

  1. DHCP Inform,DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则发送Inform报文向服务器进行请求,服务器收到该报文后,将根据租约进行查找,找到相应的配置信息后,发送ACK报文回应DHCP客户端

DHCP中继代理

只需在每个网段设置一个DHCP中继代理即可。DHCP客户端会向DHCP中继代理发送DHCP请求包,而DHCP中继代理收到这个广播包以后再以单播形式发给DHCP服务器

DHCP报文格式

TCP/IP协议架构介绍

TCP/IP协议架构介绍

OP:报文的操作类型。分为请求报文和响应报文。

  • 1:请求报文,2:应答报文。即client送给server的封包,设为1,反之为2。

  • 请求报文:DHCP Discover、DHCP Request、DHCP Release、DHCP Inform和DHCP Decline。

  • 应答报文:DHCP Offer、DHCP ACK和DHCP NAK。

Hops:DHCP报文经过的DHCP中继的数目,默认为0。

  • DHCP请求报文每经过一个DHCP中继,该字段就会增加1。

  • 没有经过DHCP中继时值为0。(若数据包需经过router传送,每站加1,若在同一网内,为0。)

Flags:标志位,只使用第0比特位,是广播应答标识位

  • 用来标识DHCP服务器应答报文是采用单播还是广播发送,0表示采用单播发送方式,1表示采用广播发送方式。其余位尚未使用。(即从0-15bits,最左1bit为1时表示server将以广播方式传送封包给client。)

  • 仅在DHCP服务器发送的Offer和ACK报文中显示,其他报文中显示为0。

  • 在Offer和ACK报文中显示发送报文的DHCP服务器名称,其他报文显示为0。

File:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。

  • 仅在DHCP Offer报文中显示,其他报文中显示为空。

Options:可选项字段,长度可变,格式为"代码+长度+数据"。

DHCP报文交互

报文过滤:

pppoed:过滤PPPoEbootp:过滤DHCP协议

C:\Users\DELL>ipconfig /release

TCP/IP协议架构介绍

2、DHCP Discover_offer_request_ack

C:\Users\DELL>ipconfig /renew

DHCP Discover

TCP/IP协议架构介绍

DHCP offer

TCP/IP协议架构介绍

DHCP Request

TCP/IP协议架构介绍

DHCP ACK

TCP/IP协议架构介绍

3、续租及续租失败的情况(1) 续租

C:\Users\DELL>ipconfig /release
C:\Users\DELL>ipconfig /renew

TCP/IP协议架构介绍

TCP/IP协议架构介绍

50%-75%-87.5%

TCP/IP协议架构介绍

(2) 续租失败

TCP/IP协议架构介绍

C:\Users\DELL>ipconfig /renew