标签:ip协议 获取 ipc web浏览器 lock 套接字 requested 长度 网关
本文介绍应用层相关协议
文件传输协议FTP(File Transfer Protocol):TCP20,21
FTP协议包括两个组成部分:FTP服务器和FTP客户端
FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive(也就是PASV,被动方式)。
Port
Passive
在建立控制通道的时候和Standard模式类似,但建立连接后发送的不是Port命令,而是Pasv命令
FTP服务器收到Pasv命令后,随机打开一个高端端口(端口号大于1024)并且通知客户端在这个端口上传送数据的请求
客户端连接FTP服务器此端口,通过三次握手建立通道,然后FTP服务器将通过这个端口进行数据的传送。
很多防火墙在设置的时候都是不允许接受外部发起的连接的,所以许多位于防火墙后或内网的FTP服务器不支持PASV模式,因为客户端无法穿过防火墙打开FTP服务器的高端端口;
而许多内网的客户端不能用PORT模式登陆FTP服务器,因为从服务器的TCP 20无法和内部网络的客户端建立一个新的连接,造成无法工作。
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( secure shell protocal ):TCP22
远程登录协议Telnet(telecommunication network protocol):TCP23
Telnet 协议是基于网络虚拟终端 NVT(Network Virtual Termina1)的实现
NVT 是虚拟设备,连接双方(客户机和服务器)都必须把它们的物理终端和 NVT 进行相互转换。
整个协议软件分为三个模块,各模块的功能如下:
Telnet远程登录服务分为以下4个过程:
telnet 客户机要做两件事:
Telnet 协议的主体由三个部分组成:
网络虚拟终端 NVT 包括两个部分:
操作协商:
为了实现对多种终端特性的支持,TELNET协议规定在扩展NVT功能时采用协商的机制,只有通信双方通过协商后达成一致的特性才能使用,才能赋予NVT该项特性,这样就可以支持具有不同终端特性的终端设备可以互连,保证他们是工作在他们自己的能力以内。
远程桌面协议RDP(Remote Desktop Protocol)
是一个多通道(multi-channel)的协议,windows自带的远程桌面mstsc
端口:TCP 3389
超文本传输协议HTTP(HTTPHyper Text Transfer Protocol):
HTTP协议的服务器端实现程序有httpd、nginx等,其客户端的实现程序主要是Web浏览器
应用:WEB端内容获取(门户网站),在移动互联网的客户端APP
方法 | 意义 |
---|---|
OPTION | 请求一些选项信息 |
GET | 请求读取由URL所标志的信息 |
HEAD | 请求读取由URL所标志的信息的首部 |
POST | 给服务器添加信息 |
PUT | 在指明的URL下存储一个文档 |
DELETE | 删除指明的URL所标志的资源 |
TRACE | 用来进行环回测试的请求报文 |
CONNECT | 用于代理服务器 |
状态码有5个大类,由第一位数字进行区分,每个大类下面还有不同的子类,每种子类的长度都是3位,都代表一个状态码,即一种类型的返回的信息。
HTTP是基于客户/服务器模式,且面向连接的。一次HTTP操作称为一个事务,典型的HTTP事务处理过程如下:
(1)客户与服务器建立连接;建立连接-TCP三次握手
(2)客户向服务器提出请求;发送请求信息
(3)服务器接受请求,并根据请求返回相应的文件作为应答;发送响应信息
(4)客户与服务器关闭连接。关闭连接
客户与服务器之间的HTTP连接是一种一次性连接,它限制每次连接只处理一个请求,当服务器返回本次请求的应答后便立即关闭连接,下次请求再重新建立连接(可以大大提高服务器的执行效率)。
HTTP是一种无状态协议,即服务器不保留与客户交易时的任何状态。这就大大减轻了服务器记忆负担,从而保持较快的响应速度。
HTTP是一种面向对象的协议。允许传送任意类型的数据对象。它通过数据类型和长度来标识所传送的数据内容和大小,并允许对数据进行压缩传送。
当用户在一个HTML文档中定义了一个超文本链后,浏览器将通过TCP/IP协议与指定的服务器建立连接。
从技术上讲是客户在一个特定的TCP端口(端口号一般为80)上打开一个套接字。如果服务器一直在这个周知的端口上倾听连接,则该连接便会建立起来。然后客户通过该连接发送一个包含请求方法的请求块。
HTTP规范定义了7种请求方法,每种请求方法规定了客户和服务器之间不同的信息交换方式,常用的请求方法是GET和POST。服务器将根据客户请求完成相应操作,并以应答块形式返回给客户,最后关闭连接。
HTTP协议是无状态的和Connection: keep-alive的区别
TCP三次握手建立连接
[SYN]—seq:(x=0)
[SYN,ACK]—seq:(y=0),ack = x+1 = 1
[ACK]—seq=x+1=1,ack=y+1=1
9.9.9.13 发出HTTP页面和图片请求 No.4
GET
157.255.77.60确认 No.5
157.255.77.60传输数据 No.6
发送状态响应码200 OK
9.9.9.13确认 No.7
.
.
.
关闭连接
tcp.flags.fin==1
HTTP请求报文
HTTP响应报文
chrome浏览器打开网页,按F12
或者 右键选择检查
,选择Network,刷新页面或者点击页面元素,可以看到报文交互、资源请求信息:
域名服务系统DNS(Domain Name System):UDP53,是因特网上作为域名和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在区域传输的时候使用TCP协议,其他时候使用UDP协议。
DNS区域传输的时候使用TCP协议:
域名解析时使用UDP协议:
DNS首部12字节
DNS query 查询报文
DNS response 响应报文
DDNS(Dynamic Domain Name Server,动态域名服务)
将用户的动态IP地址映射到一个固定的域名解析服务上,用户每次连接网络的时候客户端程序就会通过信息传递把该主机的动态IP地址传送给位于服务商主机上的服务器程序,服务器程序负责提供DNS服务并实现动态域名解析。
动态域名解析(Dynamic DNS,简称DDNS)是把互联网域名指向可变IP地址的系统。
动态主机配置协议DHCP(Dynamic Host Configuration Protocol):UDP67,68
bootps:67
bootpc:68
发现阶段,DHCP Discover,DHCP客户机以广播方式发送DHCP discover报文寻找DHCP服务器(向地址255.255.255.255发送广播信息)。
提供阶段,DHCP Offer,接收到DHCP discover报文的DHCP服务器都会做出响应,向DHCP客户机发送一个包含IP地址和其他信息的Offer报文。
选择阶段,DHCP Request,DHCP客户机只接受第一个收到的DHCP offer提供的信息,然后它就以广播方式回答一个DHCP request请求信息,该信息中包含向它所选定的DHCP服务器请求IP地址的内容,通知所有的DHCP服务器,他将选择某台DHCP服务器所提供的IP地址。
确认阶段,DHCP ACK,确认IP地址。当DHCP服务器收到DHCP客户机回答的DHCP request请求信息之后,它便向DHCP客户机发送一个包含它所提供的IP地址和其他设置的DHCP ack确认信息,告诉DHCP客户机可以使用它所提供的IP地址。
重新登录,DHCP NAK,如果客户机的IP地址已无法再分配给原来的DHCP客户机使用时(比如此IP地址已分配给其它DHCP客户机使用),则DHCP服务器给DHCP客户机回答一个DHCP nack否认信息。当原来的DHCP客户机收到此DHCP nack否认信息后,重新发送DHCP discover发现信息来请求新的IP地址。
更新租约,DHCP服务器向DHCP客户机出租的IP地址一般都有一个租借期限,期满后DHCP服务器便会收回出租的IP地址。如果DHCP客户机要延长其IP租约,则必须更新其IP租约。DHCP客户机启动时和IP租约期限过一半时,DHCP客户机都会自动向DHCP服务器发送更新其IP租约的信息。通过单播发送DHCP request信息到DHCP服务器
DHCP Release,当用户不再需要使用分配IP地址时,就会"主动"向DHCP服务器发送Release报文,告知服务器用户不再需要分配IP地址,DHCP服务器会释放被绑定的租约(在数据库中清除某个MAC对某个IP的租约记录,这样,这个IP就可以分配给下一个请求租约的MAC)
DHCP Decline,DHCP客户端收到DHCP服务器回应的ACK报文后,通过地址冲突检测发现服务器分配的地址冲突或者由于其他原因导致不能使用,则发送Decline报文,通知服务器所分配的IP地址不可用,我们在手工设置静态IP、或者DHCP分配中有时会遇到"检测到IP冲突"的提示就是因为客户端利用ARP机制来在当前内网中确认当前指定的IP是否已经被占用
DHCP Inform,DHCP客户端如果需要从DHCP服务器端获取更为详细的配置信息,则发送Inform报文向服务器进行请求,服务器收到该报文后,将根据租约进行查找,找到相应的配置信息后,发送ACK报文回应DHCP客户端
家庭网络大多都只有一个以太网(无线LAN)的网段,与其连接的主机台数也不会太多。因此,只要有一台DHCP服务器就足以应对IP地址分配的需求,而大多数情况下都由宽带路由器充当这个DHCP的角色。相比之下,一个企业或学校等较大规模组织机构的网络环境中,一般会有多个以太网(无线LAN)网段。在这类网络环境中,往往需要将DHCP统一管理。具体方法可以使用DHCP服务器统一进行管理和运维。
只需在每个网段设置一个DHCP中继代理即可。DHCP客户端会向DHCP中继代理发送DHCP请求包,而DHCP中继代理收到这个广播包以后再以单播形式发给DHCP服务器。
服务器收到该包以后再向DHCP中继代理返回应答,并由DHCP中继代理将此包转发给DHCP客户端。DHCP包中包含发出请求的主机的MAC地址。DHCP中继代理正是利用这个MAC地址将包返回给了DHCP客户端。由此,DHCP服务器即使不在同一个链路上也可以实现统一分配和管理IP地址。
OP:报文的操作类型。分为请求报文和响应报文。
Htype:DHCP客户端的MAC地址类型。MAC地址类型其实是指明网络类型
Htype值为1时表示为最常见的以太网MAC地址类型。
Hlen:DHCP客户端的MAC地址长度。以太网MAC地址长度为6个字节,即以太网时Hlen值为6。
Hops:DHCP报文经过的DHCP中继的数目,默认为0。
Xid:客户端通过DHCP Discover报文发起一次IP地址请求时选择的随机数,相当于请求标识。用来标识一次IP地址请求过程。在一次请求中所有报文的Xid都是一样的。
Secs:DHCP客户端从获取到IP地址或者续约过程开始到现在所消耗的时间,以秒为单位。在没有获得IP地址前该字段始终为0。(DHCP客户端开始DHCP请求后所经过的时间。目前尚未使用,固定为0。)
Flags:标志位,只使用第0比特位,是广播应答标识位
用来标识DHCP服务器应答报文是采用单播还是广播发送,0表示采用单播发送方式,1表示采用广播发送方式。其余位尚未使用。(即从0-15bits,最左1bit为1时表示server将以广播方式传送封包给client。)
【注意】在客户端正式分配了IP地址之前的第一次IP地址请求过程中,所有DHCP报文都是以广播方式发送的,包括客户端发送的DHCP Discover和DHCP Request报文,以及DHCP服务器发送的DHCP Offer、DHCP ACK和DHCP NAK报文。当然,如果是由DHCP中继器转的报文,则都是以单播方式发送的。
另外,IP地址续约、IP地址释放的相关报文都是采用单播方式进行发送的。
Ciaddr:DHCP客户端的IP地址。仅在DHCP服务器发送的ACK报文中显示,在其他报文中均显示0,因为在得到DHCP服务器确认前,DHCP客户端是还没有分配到IP地址的。
Yiaddr:DHCP服务器分配给客户端的IP地址。
Siaddr:下一个为DHCP客户端分配IP地址等信息的DHCP服务器IP地址。
Giaddr:DHCP客户端发出请求报文后经过的第一个DHCP中继的IP地址。
Chaddr:DHCP客户端的MAC地址。在每个报文中都会显示对应DHCP客户端的MAC地址。
Sname:为DHCP客户端分配IP地址的DHCP服务器名称(DNS域名格式)。
File:DHCP服务器为DHCP客户端指定的启动配置文件名称及路径信息。
Options:可选项字段,长度可变,格式为"代码+长度+数据"。
报文过滤:
pppoed:过滤PPPoE
bootp:过滤DHCP协议
1、DHCP Release
如果Client放弃现在使用的IP地址,则它发送DHCP Release单播报文,通知Server, Server将此地址回收以便下次使用
C:\Users\DELL>ipconfig /release
2、DHCP Discover_offer_request_ack
Client发送释放报文后,必须不再使用此地址发送其他数据包,并且再使用IP地址前必须重新发送Discover报文
C:\Users\DELL>ipconfig /renew
DHCP Discover
DHCP offer
DHCP Request
DHCP ACK
3、续租及续租失败的情况
(1) 续租
C:\Users\DELL>ipconfig /release
C:\Users\DELL>ipconfig /renew
50%-75%-87.5%
(2) 续租失败
(3) 没有IP地址缓存的情况
C:\Users\DELL>ipconfig /renew
这是因为没有IP地址缓存
下图为有IP地址缓存的情况下,会有option 50这个字段
文章标题:TCP/IP协议架构介绍(四):应用层
本文作者:hiyo
本文链接:https://www.cnblogs.com/hiyong/p/14163933.html
欢迎关注公众号:「测试开发小记」及时接收最新技术文章!
标签:ip协议 获取 ipc web浏览器 lock 套接字 requested 长度 网关
原文地址:https://www.cnblogs.com/hiyong/p/14163933.html