TCP应用层

TCP Keepalive机制与应用层心跳Heartbeat TCP长连接中可能出现的问题1.     很多防火墙路由器等对于空闲socket自动关闭2.     对于非正常断开, 服务器并不能检测到. 为了回收资源, 必须提供一种检测机制.于是,就有了心跳(HeartBeat)机制。心跳机制的两种实现方案目前而言,有两种方式实现TCP的保活(业内现状是IM方面几乎都采用第一种)1.     应用层协议自己实现的心跳机制很多应用层协议都有HeartBeat机... 阅读详情

来自 《计算机网络》之应用层

《计算机网络》之应用层
 
一、引言
       应用层作为和用户交互的最高层,其任务是直接为用户的应用进程提供服务。应用层的具体内容就是规定应用进程在通信时所遵循的协议。因特网的应用层协议有很多,如最为熟知的HTTP(端口号80)和FTP(端口号21)、支持电子邮件的SMTP(端口号25)、域名系统DNS(端口号53)等。下面我们来简单介绍域名系统DNS、万维网WWW (HTTP)和电子邮件 (SMTP/POP3)。
二、域名系统
       域名系统DNS (Domain Name System)用来把便于人们使用的机器名字转换为IP地址。
       一个域名,以小数点为分隔符,从右往左依次是顶级域名、二级域名、三级域名……顶级域名TLD (TopLevel Domain)有265个(2006.12统计),如国家顶级域名cn/us/uk/jp等和通用顶级域名com/net/org/edu/gov等。注意,www.abc.cn中的”abc”比www.abc.com.cn中的”abc”级别要高。
       下面介绍一下域名服务器 (name server)。
       域名服务器分为四种:根/顶级/权限/本地域名服务器。前三种构成域名服务器的层次结构:根域名服务器最重要,处于最顶层,存储着所有顶级域名服务器的域名和IP地址;顶级域名服务器负责管理自己的所有二级域名;再往下就都是权限域名服务器的工作了,它管理自己负责的区。请注意,一个域可以分成一个或多个区,每个区由一个权限域名服务器管辖,如:域abc.com可分为区abc.com和区x.abc.com,这时域abc.com比区abc.com大,区abc.com管理域abc.com中除了区x.abc.com的其他内容。不过,当有对x.abc.com的请求时,会先访问区abc.com的权限域名服务器,然后此服务器再引导至区x.abc.com的权限域名服务器,并非直接访问区x.abc.com的权限域名服务器(因为会按顺序先解析到域abc.com)。
       而本地域名服务器是干什么的呢?它是专门为一个ISP/大学/组织等的主机服务的。主机的DNS查询请求会统一发送到它的本地域名服务器受理,然后由这个本地域名服务器给予响应(递归查询 recursive query——全权委托此服务器)。“递归”体现在什么地方呢?当本地域名服务器不知道答案时,它会自己去向根域名服务器(一定是根)发送查询请求,反正事情都自己办了,最后给出主机一个结果,“办事还是挺认真负责的”。这与下面的不同。本地域名服务器向根域名服务器的查询是迭代查询 (iterativequery)——为了避免负载过大,根域名服务器只会告诉本地域名服务器下一步该向哪个顶级域名服务器查询,而不会自己包揽剩下的活。本地域名服务器根据它的“指路”,自己再发起下一步查询。后面的也都是迭代的。
其实根域名服务器并不是只能接受迭代查询——当本地域名服务器很“懒”时,就会向根域名服务器发送递归查询,根还是会接受而全权代理的。只是一般情况下都采用迭代查询罢了。
三、万维网
       万维网WWW (World Wide Web)是一个大规模的、联机式的信息储藏所,简称Web。它的灵魂就是“链接”,使得因特网上的资源相互连系了起来。
       万维网使用统一资源定位符URL (Uniform Resource Locator)来标识WWW上的各种文档,使用超文本传送协议HTTP (HyperText Transfer Protocol)实现链接(使用TCP协议),使用超文本标记语言HTML (HyperText Markup Language)统一显示不同的文档。
       URL:<协议>://<主机>:<端口>/<路径>
       HTTP:面向事务的无连接、无状态的协议,但使用TCP协议实现可靠传输。HTTP/1.0的特点是每请求一个文档都要重新建立TCP链接和释放TCP链接,而HTTP/1.1作出了改进,使用了持续连接——为TCP连接保留一段时间。
       HTML就不说了,一般能看到这篇文章的人都至少了解一点基础,而且网上的教程太丰富了,请利用手中的万维网信息检索系统(分为全文检索和分类检索)自行百度吧!
四、电子邮件
       最重要的是简单邮件传送协议SMTP (Simple Mail Transfer Protocol)和邮局协议POP3 (Post Office Protocol version 3) ,都使用TCP连接。前者用于发送方用户代理UA (User Agent)向发送方邮件服务器发送邮件和发送方邮件服务器向接收方邮件服务器发送邮件;后者用于接收方邮件服务器给收件人UA发送邮件。其实就是下面这张图,理解了就结束了。
 
 
       最后再补充一点内容。由于SMTP只能传送可打印的7位ASCII码,因此提出通用因特网邮件扩充MIME (Multipurpose Internet MailExtensions),可以传送包括多媒体在内的多种数据。它并没有取代SMTP,而是在中间套了一层,如下图。
 
 
       POP3也有缺点,就是它设置为只要收件方UA读取了邮件,就把邮件删除。因此提出了网际报文存取协议IMAP (Internet MessageAccess Protocol),不仅不主动删除,还提供各种管理功能。可以发现,现在的邮箱都是IMAP的。


DNS


TCP/IP笔记 四.应用层(1)——DNS
 
1. DNS
DNS(Domain Name System ):域名系统,是因特网的一项核心服务,它作为可以将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。
DNS使用TCP与UDP端口号都是53,主要使用UDP,服务器之间备份使用TCP。
 
2. 域名结构
通常 Internet 主机域名的一般结构为:
主机名.三级域名.二级域名.顶级域名
2.1 顶级域名 TLD (Top Level Domain)
(1) 国家顶级域名 nTLD:如: .cn 表示中国,.us 表示美国,.uk 表示英国,等等。
(2) 国际顶级域名 iTLD:采用.int。国际性的组织可在 .int 下注册。
(3) 通用顶级域名 gTLD:最早的顶级域名是:
    .com 表示公司企业
    .net 表示网络服务机构
    .org 表示非赢利性组织
    .edu 表示教育机构(美国专用)
    .gov 表示政府部门(美国专用)
    .mil 表示军事部门(美国专用) 
 
 
2.2 域名服务器
本地域名服务器应该是大型单位或当地的网络运营商拥有;主域名服务器应该归网通、电信这种等级的主干运营商或政府所有;
根域名服务器(Root Name Server)
根域名服务器是网络中的核武,根域名服务器出现故障将会导致大面积,如果所有的RNS瘫痪,那么整个DNS系统就无法工作。
全球的13组根域名服务器,名字从a到m。域名分别为a.rootservers.net,...,m.rootservers.net。RNS中1个为主根服务器,放置在美国。其余12个均为辅根服务器,其中9个放置在美国,欧洲2个,位于英国和瑞典,亚洲1个,位于日本,由互联网域名与号码分配机构ICANN统一管理。
 
3. DNS解析
(1)host向本地域名服务器的查询一般都是采用递归查询(recursive query)
Recursive Query:如果host(主机)询问的LNS(Local Name Server 本地域名服务器)不知道被查询的IP地址,那么LNS就替代host向RNS查询。
(2)本地域名服务器向根服务器查询一般采用迭代查询(iterative query)
Iterative Query:当RNS收到LNS的查询时,其返回结果为:a.被查询的IP;b.应该向哪一个DNS查询的IP
 
 
4. 故障排查
4.1 nslookup(网路查询)
要想百分之百判断是否为DNS解析故障就需要通过系统自带的NSLOOKUP来解决了。
(1)确认自己的系统是windows 2000和windows xp以上操作系统,然后通过“开始->运行->输入CMD”后回车进入命令行模式。
(2)输入nslookup命令后回车,将进入DNS解析查询界面。
(3)命令行窗口中会显示出当前系统所使用的DNS服务器地址,例如笔者的DNS服务器IP为202.106.0.20。
(4)接下来输入你无法访问的站点对应的域名。假如不能访问的话,那么DNS解析应该是不能够正常进行的。我们会收到DNS request timed out,timeout was 2 seconds的提示信息。这说明我们的计算机确实出现了DNS解析故障。
小提示:如果DNS解析正常的话,会反馈回正确的IP地址。
4.2 查询DNS服务器工作是否正常:
这时候我们就要看看自己计算机使用的DNS地址是多少了,并且查询他的运行情况。
(1)通过“开始->运行->输入CMD”后回车进入命令行模式。
(2)输入ipconfig/all命令来查询网络参数。
(3)在ipconfig /all显示信息中我们能够看到一个地方写着DNS SERVERS,这个就是我们的DNS服务器地址。例如笔者的是202.106.0.20和202.106.46.151。从这个地址可以看出是个外网地址,如果使用外网DNS出现解析错误时,我们可以更换一个其他的DNS服务器地址即可解决问题。
(4)如果在DNS服务器处显示的是自己公司的内部网络地址,那么说明你们公司的DNS解析工作是交给公司内部的DNS服务器来完成的,这时我们需要检查这个DNS服务器,在DNS服务器上进行nslookup操作看是否可以正常解析。解决DNS服务器上的DNS服务故障,一般来说问题也能够解决。
4.3 清除DNS缓存信息法:
(1)通过“开始->运行->输入CMD”进入命令行模式。
(2)在命令行模式中我们可以看到在ipconfig /?中有一个名为/flushdns的参数,这个就是清除DNS缓存信息的命令。
(3)执行ipconfig /flushdns命令,当出现“successfully flushed the dns resolver cache”的提示时就说明当前计算机的缓存信息已经被成功清除。
(4)接下来我们再访问域名时,就会到DNS服务器上获取最新解析地址,再也不会出现因为以前的缓存造成解析错误故障了。
4.4 修改HOSTS(主机)文件法:
(1)进入c:\windows\system32\drivers\etc目录中找到HOSTS文件。如果你的系统是windows 2000,那么应该到c:\winnt\system32\drivers\etc目录中寻找。
(2)双击HOSTS文件,然后选择用“记事本”程序将其打开。
(3)之后我们就会看到HOSTS文件的所有内容了,默认情况下只有一行内容“127.0.0.1 localhost”。(其他前面带有#的行都不是真正的内容,只是帮助信息而已)
(4)将你希望进行DNS解析的条目添加到HOSTS文件中。具体格式是先写该域名对应的IP地址,然后空格接域名信息。
(5)设置完毕后我们访问网址时就会自动根据是在内网还是外网来解析了。
 

FTP


TCP/IP笔记 四.应用层(2)——FTP
 
1. FTP(File Transfer Protocol)
文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。
FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。
1.1 网络环境下复制文件的复杂性:
(1) 计算机存储数据的格式不同。
(2) 文件的目录结构和文件命名的规定不同。
(3) 对于相同的文件存取功能,操作系统使用的命令不同。
(4) 访问控制方法不同。
FTP是一个8位的客户端-服务器协议,能操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。 
 
2 两个链接
FTP服务一般运行在20和21两个端口。端口20用于在客户端和服务器之间传输数据流,而端口21用于传输控制流,并且是命令通向ftp服务器的进口。
 
 
好处:
(1)使协议更加简单和更容易实现。
(2)在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)。
3 FTP优缺点
3.1 优点:
(1)促进文件的共享(计算机程序或数据)
(2)鼓励间接或者隐式的使用远程计算机
(3)向用户屏蔽不同主机中各种文件存储系统的细节
(4)可靠和高效的传输数据
3.2 缺点:
(1)密码和文件内容都使用明文传输,可能产生不希望发生的窃听。
(2)因为必须开放一个随机的端口以建立连接,当防火墙存在时,客户端很难过滤处于主动模式下的FTP流量。这个问题通过使用被动模式的FTP得到了很大解决。
(3)服务器可能会被告知连接一个第三方计算机的保留端口。
FTP虽然可以被终端用户直接使用,但是它是设计成被FTP客户端程序所控制。
运行FTP服务的许多站点都开放匿名服务,在这种设置下,用户不需要帐号就可以登录服务器,默认情况下,匿名用户的用户名是:“anonymous”。这个帐号不需要密码,虽然通常要求输入用户的邮件地址作为认证密码,但这只是一些细节或者此邮件地址根本不被确定,而是依赖于FTP服务器的配置情况。

HTTP


TCP/IP笔记 四.应用层(3)——HTTP
 
1. URL
URL(Uniform Resource Locator) 相当于一个文件名在网络范围的扩展。
1.1 格式
schema://host[:port#]/path/.../[?query-string][#anchor]
scheme            指定低层使用的协议(例如:http, https, ftp)
host                   HTTP服务器的IP地址或者域名(存放资源的地方)
port#                 HTTP服务器的默认端口是80,这种情况下端口号可以省略。
path                   访问资源的路径
query-string       发送给http服务器的数据
anchor-             锚
 
2. HTTP
HTTP (HyperText Transfer Protocol),超文本传送协议 。HTTP 是一个应用层协议,它使用 TCP 连接进行可靠的传送。
 
 
2.1 工作过程
(1) 浏览器分析超链指向页面的 URL。
(2) 浏览器向 DNS 请求解析 www.tsinghua.edu.cn 的 IP 地址。
(3) 域名系统 DNS 解析出清华大学服务器的 IP 地址。
(4) 浏览器与服务器建立 TCP 连接
(5) 浏览器发出取文件命令:
      GET /chn/yxsz/index.htm。
(6) 服务器 给出响应,把文件 index.htm 发给浏览器。
(7) TCP 连接释放。
(8) 浏览器显示“清华大学院系设置”文件 index.htm 中的所有文本。
注:打开一个网页一般需要多次Request:
(1)首先浏览器获取到index.html页面,然后浏览器就会对index.html进行解析
(2)解析后发现其中还有很多信息,比如图片、css、js等其他引用信息,然后浏览器就会自动对这些信息发出Request请求
(3)当所有的数据都获取完毕后,浏览器就会把网页显示出来。(一般来说,当页面的大体框架获取完成后就会把页面显示出来)
 
 
2.2 特点
(1)面向事务的客户服务器协议。
(2)HTTP 1.0 协议是无状态的(stateless)。
同一个客户端的这次请求和上次请求是没有对应关系,对http服务器来说,它并不知道这两个请求来自同一个客户端。 为了解决这个问题, Web程序引入了Cookie机制来维护状态.
(3)HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。
(4)万维网浏览器就是一个 HTTP 客户,而在万维网服务器等待 HTTP 请求的进程常称为 HTTP daemon,有的文献将它缩写为 HTTPD。
(5)HTTP daemon 在收到 HTTP 客户的请求后,把所需的文件返回给 HTTP 客户。   
 
2.3 HTTP消息格式
HTTP有2种消息:
Request(请求报文)——从客户向服务器发送请求报文。
Response(响应报文)——从服务器到客户的回答。
2.3.1 Request
先看Request 消息的结构,   Request 消息分为3部分,第一部分叫Request line, 第二部分叫Request header, 第三部分是body. header和body之间有个空行, 结构如下图
 
 
第一行中的方法(Method)表示请求方法,比如"POST","GET",  URL表示请求的资源, Http/version-number 表示HTTP协议的版本号
当使用的是"GET" 方法的时候, body是为空的。
方法:
Http协议定义了很多与服务器交互的方法,最基本的有4种,分别是GET,POST,PUT,DELETE. 一个URL地址用于描述一个网络上的资源,而HTTP中的GET, POST, PUT, DELETE就对应着对这个资源的查,改,增,删4个操作。 我们最常见的就是GET和POST了。GET一般用于获取/查询资源信息,而POST一般用于更新资源信息.
GET和POST的区别:
(1)GET提交的数据会放在URL之后,以?分割URL和传输数据,参数之间以&相连,如EditPosts.aspx?name=test1&id=123456.  POST方法是把提交的数据放在HTTP包的Body中.
(2)GET提交的数据大小有限制(因为浏览器对URL的长度有限制),而POST方法提交的数据没有限制.
(3)GET方式需要使用Request.QueryString来取得变量的值,而POST方式通过Request.Form来获取变量的值。
(4)GET方式提交数据,会带来安全问题,比如一个登录页面,通过GET方式提交数据时,用户名和密码将出现在URL上,如果页面可以被缓存或者其他人可以访问这台机器,就可以从历史记录获得该用户的账号和密码.
2.3.2 Response
 
 
状态码:
1xx 表示通知信息的,如请求收到了或正在进行处理。
2xx 表示成功,如接受或知道了。
3xx 表示重定向,表示要完成请求还必须采取进一步的行动。
4xx 表示客户的差错,如请求中有错误的语法或不能完成。
5xx 表示服务器的差错,如服务器失效无法完成请求。

DHCP
DHCP应用层协议
 
  首先,它是一种应用层协议,建立在 UDP 协议之上,所以整个数据包是这样的:
 
 
  (1)最前面的"以太网标头",设置发出方(本机)的 MAC 地址和接收方(DHCP 服务器)的 MAC 地址。前者就是本机网卡的 MAC 地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。
 
  (2)后面的"IP 标头",设置发出方的 IP 地址和接收方的 IP 地址。这时,对于这两者,本机都不知道。于是,发出方的 IP 地址就设为0.0.0.0,接收方的 IP 地址设为 255.255.255.255。
 
  (3)最后的"UDP 标头",设置发出方的端口和接收方的端口。这一部分是 DHCP 协议规定好的,发出方是 68 端口,接收方是 67 端口。
  这个数据包构造完成后,就可以发出了。以太网是广播发送,同一个子网络的每台计算机都收到了这个包。

因为接收方的 MAC 地址是 FF-FF-FF-FF-FF-FF,看不出是发给谁的,所以每台收到这个包的计算机,还必须分析这个包的 IP 地址,才能确定是不是发过自己的。当看到发出方 IP 地址是0.0.0.0,接收方是 255.255.255.255,于是 DHCP 服务器知道"这个包是发过我的",而其他计算机就可以丢弃这个包。
 
  接下来,DHCP 服务器读出这个包的数据内容,分配好 IP 地址,发送回去一个"DHCP 响应"数据包。这个响应包的结构也是类似的,以太网标头的 MAC 地址是双方的网卡地址,IP 标头的 IP 地址是 DHCP 服务器的 IP 地址(发出方)和 255.255.255.255(接收方),UDP 标头的端口是 67(发出方)和 68(接收方),分配给请求端的 IP 地址和本网络的具体参数则包含在 Data 部分。
 
  新加入的计算机收到这个响应包,于是就知道了自己的 IP 地址、子网掩码、网关地址、DNS 服务器等等参数。

小结

之前总结HTTP的时候也顺便总结了DNS的工作原理,这里就不多说了,来看看其他常用的应用层协议吧。
FTP
FTP(文本传输协议)是因特网上使用得最狂饭的文件传送协议。FTP提供交互的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。它屏蔽了个计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。

FTP提供的功能:
1)提供不同种类主机系统
2)以用户权限管理的方式提供用户对远程FTP服务器上的文件管理能力
3)以匿名FTP的方式提供公用文件共享能力

FTP采用客户/服务器工作方式,基于TCP可靠的传输服务。一个FTP服务器进程可同时为多个客户进程提供服务。FTP的服务器进程有两大部分组成:一个主进程,负责接收心得请求;若干从属进程,负责处理单个请求。

FTP工作原理:

在主动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,然后开放N+1号端口进行监听,并向服务器发出PORT N+1命令。服务器接收到命令后,会用其本地的FTP数据端口(通常是20)来连接客户端指定的端口N+1,进行数据传输。

在被动模式下,FTP客户端随机开启一个大于1024的端口N向服务器的21号端口发起连接,同时会开启N+1号端口。然后向服务器发送PASV命令,通知服务器自己处于被动模式。服务器收到命令后,会开放一个大于1024的端口P进行监听,然后用PORT P命令通知客户端,自己的数据端口是P。客户端收到命令后,会通过N+1号端口连接服务器的端口P,然后在两个端口之间进行数据传输。

主动模式的FTP是指服务器主动连接客户端的数据端口,被动模式的FTP是指服务器被动地等待客户端连接自己的数据端口。

被动模式的FTP通常用在处于防火墙之后的FTP客户访问外界FTP服务器的情况,因为在这种情况下,防火墙通常配置为不允许外界访问防火墙之后主机,而只允许由防火墙之后的主机发起的连接请求通过。因此,在这种情况下不能使用主动模式的FTP传输,而被动模式的FTP可以良好的工作。

NOTE:
(1)PORT其实是Standard模式的另一个名字,又称为Active模式。中文意思是“主动模式。
(2)PASV也就是Passive的简写。中文就是“被动模式。

FTP在工作时使用两个并行的TCP连接,一个是控制连接(21端口),一个是数据连接(20端口)。使用两个不同的端口号可使协议更加简单和容易实现。

当NAT(Network Address Translation)设备以主动模式访问FTP服务器时,由于NAT设备不会聪明的变更FTP包中的IP地址,从而导致无法访问服务器。

电子邮件

简单介绍下电子邮件的发送过程:
1)发信人调用用户代理来撰写和编辑要发送的邮件。用户代理用SMTP协议吧邮件传送给发送方邮件服务器。
2)发送方邮件服务器将邮件放入邮件缓存队列中,等待发送。
3)运行在发送方邮件服务器的SMTP客户进程,发现在邮件缓存中有待发送的邮件,就向运行在接收方邮件服务器的SMTP服务器进程发起建立TCP连接。
4)TCP连接建立后,SMTP客户进程开始向远程的SMTP服务器进程发送邮件。当所有的待发送邮件发完了,SMTP就关闭所建立的TCP连接。
5)运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,将邮件放入收信人的用户邮箱中,等待收信人在方便时进行读取。
6)收信人在打算收信时,调用用户代理,使用POP3协议将自己的邮件从接收方邮件服务器的用户邮箱中的取回。

SMTP

SMTP,即简单邮件传送协议,所对应RFC文档为RFC821。同http等多数应用层协议一样,它工作在C/S模式下,用来实现因特网上的邮件传送。基于TCP连接,端口号是25.

SMTP通信(如发送端邮件服务器与接收端服务器的通信)的过程如下。
1)发送端邮件服务器(以下简称客户端)与接收端邮件服务器(以下简称服务器)的25号端口建立TCP连接。
2)客户端向服务器发送各种命令,来请求各种服务(如认证、指定发送人和接收人)。
3) 服务器解析用户的命令,做出相应动作并返回给客户端一个响应。
4)2)和3)交替进行,直到所有邮件都发送完或两者的连接被意外中断。

POP3
基于TCP连接,端口号是110.

用户从邮件服务器上接收邮件的典型通信过程如下。
1)用户运行用户代理(如Foxmail, Outlook Express)。
2)用户代理(以下简称客户端)与邮件服务器(以下简称服务器端)的110端口建立TCP连接。
3)客户端向服务器端发出各种命令,来请求各种服务(如查询邮箱信息,下载某封邮件等)。
4)服务端解析用户的命令,做出相应动作并返回给客户端一个响应。
5)3)和4)交替进行,直到接收完所有邮件转到步骤6),或两者的连接被意外中断而直接退出。
6)用户代理解析从服务器端获得的邮件,以适当地形式(如可读)的形式呈现给用户。

IGMP

IGMP(Internet Group Management Protocol)作为因特网组管理协议,是TCP/IP 协议族中负责IP 组播成员管理的协议,它用来在IP 主机和与其直接相邻的组播路由器之间建立、维护组播组成员关系。
IP 主机通过发送IGMP 报文宣布加入某组播组;本地组播路由器通过周期性的发送IGMP 报文轮询本地网络上的主机,确定本地组播组成员信息。

工作原理

IGMP 协议是IP 组播在末端网络上使用的主机对路由器的信令机制,分为两个功能部分:主机侧和路由器侧。IGMP 工作机制如下所述:
1) 接收者主机向所在的共享网络报告组成员关系。
2)处于同一网段的所有使能了IGMP 功能的组播路由器选举出一台作为查询器,查询器周期性地向该共享网段发送组成员查询消息。
3) 接收者主机接收到该查询消息后进行响应以报告组成员关系。
4) 网段中的组播路由器依据接收到的响应来刷新组成员的存在信息。如果超时无响应,组播路由器就认为网段中没有该组播组的成员,从而取消相应的组播数据转发。
5) 所有参与组播传输的接收者主机必须应用IGMP 协议。主机可以在任意时间、任意位置、成员总数不受限制地加入或退出组播组。
6)支持组播的路由器不需要也不可能保存所有主机的成员关系,它只是通过IGMP协议了解每个接口连接的网段上是否存在某个组播组的接收者,即组成员。而各主机只需要保存自己加入了哪些组播组。

主机加入组播组的基本过程如下:
1)IGMP 查询器(RouterB)周期性地向共享网段内所有主机以组播方式(目的地址为组播地址)发送普遍组Query 查询消息。该报文的目的地址为224.0.0.1,表示该网段上的所有主机和路由器。
2)网段内所有主机都接收到该普遍组查询消息。如果主机(如HostB 和HostC)希望加入某组播组G1,则以组播方式发送Report 报告。该报文的目的地址为224.0.0.1,报文中携带组播组G1 的地址信息。
3) 网段中所有主机和路由器都接收到该Report 报告,并获知组播组G1 地址信息,此时网段中其它也希望加入该组播组G1 的主机将不再发送针对相同组播组的Report 报告。同时,网段中预备加入另一组播组G2 的主机发送针对组播组G2 的Report 报告以响应普遍组查询消息。
4)经过查询和响应过程后,IGMP 路由器了解到本网段内存在组播组G1 对应的组播组成员,则由组播路由协议生成(*,G1)组播转发项并以此作为组播数据的转发依据。之后,组播路由协议将发起上游路由更新以维护组播转发树。
5)组播源发出的组播数据经过组播路由到达IGMP 路由器,如果IGMP 路由器上存在(*,G1)组播转发项,则转发该组播数据到此共享网段,G1 组播组成员主机接收该数据。
6)IGMPv1 中没有专门定义离开组播组的消息。当主机离开某组播组后,将不再发送以此组播组地址为目的地址的Report 报告。当网段中不再存在该组播组成员后,IGMP 路由器将不能收到任何针对此组播组的Report 报告,则IGMP 路由器删除该组播组对应的转发项。


SAP S/4HANA 可扩展性 – 面向初学者的简化指南 可扩展性(Extensibility)是 SAP ECC 和 SAP S/4HANA 的一项关键功能。它使客户能够通过定制其业务流程来创造竞争优势,并使合作伙伴能够通过量身定制的解决方案来丰富核心 ECC 或 S/4HANA。在过去的几十年中,SAP 的 on-premise 版本客户和合作伙伴主要使用经典的 ABAP 扩展性来扩展他们的 ERP 解决方案。经典扩展性允许 ABAP 开发人员使用甚至修改所有 SAP 对象。尽管经典扩展性非常强大和灵活,但在当今的云世界中,它已不再是一个好的选择。 阅读详情

相关推荐

计算机组成原理(二)—— 数据的表示与运算

本章目录引言一、数制与编码1.1 进位计数制1.1.1 进制及转换1.1.2 真值、机器数1.2 BCD码1.3 ASCII 码1.4 校验码1.4.1 奇偶校验码1.4.2 海明码1.4.3 CRC循环冗余码二、定点数的表示和运算2.1 定点数的表示2.1.1 无符号2.1.2 有符号(原码、反码、补码、移码)2.2 定点数的运算2.2.1 移位运算2.2.2 加减运算(溢出判断)2.2.3 乘法运算2.2.4 除法运算2.3 强制类型转换2.4 数据的存储和排列三、浮点数的表示和运算3.1 浮点数的表示

S mile0804的博客 7473

nginx里tcp设置域名访问

nginx里tcp设置域名访问

YeJinYang的博客 2661

C#操作SQLite数据库帮助类——SQLiteHelper

using System; using System.Collections.Generic; using System.Data.SQLite; using System.Data; namespace Com.ZCWL.Rock.Helper { public class SQLiteHelper { private static string connectionString =

跟健哥出去走走 2万+

TCP/IP——应用层

TCP/IP——应用层 在OSI七层模型中,将应用层,会话层,表示层综合看成了TCP/IP模型中的应用层 一、应用和数据 应用: 1)应用的存在,是为了满足人们的各种需求,比如访问网页,在线游戏,在线视频 2)伴随着应用会有信息的产生。比如文本,图片,时评等都是信息的不同呈现方式 数据: 1)数据的产生:在计算机领域,数据是各种信息的载体 2)数据的传输:大部分应用程序所产生的数据需要在不同设备之间传递 在TCP/IP协议中,每一层都定义了不同功能的协议,如下图: 二、理解应用层功能 应用层为应用软件提供

weixin_54535828的博客 6566

未来智能家居解决方案:AI应用架构师的前沿探索

当你加班到深夜回家时,门锁自动识别你的脚步声解锁,玄关灯渐亮成你最爱的暖光,空调早已调到25℃(你夏天的习惯温度),音箱播放着最近循环的爵士乐,茶几上的智能水壶烧好了温水——这不是科幻电影,而是未来智能家居的日常。如何让“冰冷的设备”变成“懂你的伙伴”。我们将深入探讨五大前沿技术(边缘AI、多模态融合、联邦学习、数字孪生、个性化推荐)的底层原理,用“家里的小管家”“邻居互相学习”等生活化比喻简化复杂概念,结合代码示例与架构图还原实现流程,并通过智能卧室、智能厨房等真实案例展示落地路径。

AI天才研究院 1410

Carla-UE4Editor导入RoadRunner地图文件(保姆级教程)

以Carla官网导入RoadRunner地图的标准文档为参考,里面增添了很多细节和注意事项,遇到问题的小伙伴过来看看吧。

DSK_981029的博客 1万+

[网络]TCP/IP五层协议之应用层,传输层(1)

网络传输中, 可能会发生后发先至, A按照1 2 3 4的顺序write, 那么B read的时候, 也要按照1 2 3 4read, 虽然传输的过程可能出现后发先至, 是乱序的, 但是不要紧, 在接收缓冲区中, 会对收到的数据先排个序, 让序号小的在前面, 序号大的在后面, 并且数据和数据之间的序号始终都是连续的, 如果前面的数据还没到, 会给这个数据留一个位置, 等待数据过来。就像发短信, 发送短信后, 对方回复, 接收到的消息, 就叫做"应答", 这样的数据, 称为"应答报文"

m0_73992740的博客 1088

SAP_FI模块_固定资产期初导入全流程(含导入代码)

SAP 期初导入资产主数据以及金额相关的操作全流程记录,包含了批导程序的代码,以及错误记录

风沙的博客 1404

《网 络》

当前页面中的某个接口请求的地址和当前页面的地址如果协议、域名、端口其中有一项不同,就说该接口跨域了。

狡辉两门的博客 1838

数字IC行业笔试面试全攻略

数字IC行业迎来快速发展,国产替代加速,技术创新活跃,应用领域持续扩展,但人才缺口扩大。职业发展路径清晰,从初级到首席工程师/架构师的技术路线,或转向管理岗位。薪资待遇优厚,应届生起薪25-35W,5-10年经验可达70-110W,架构师年薪超百万。薪资受公司平台、技术方向、学历背景、项目经验和地域因素影响。AI芯片、汽车电子等热门方向溢价明显,成功流片经验尤其重要。

2301_79143213的博客 759

【雕爷学编程】Arduino动手做(45)---红外光电避障传感器模块4

雕爷学编程,Arduino动手做,开源硬件,创客传感器,红外光电避障传感器模块

雕爷学编程 2503

TCP/IP网络编程 第八章:域名及网络地址

简要的介绍一下域名和IP之间的转换

Reol99999的博客 1462

yolov5改进之Fasternet主干网络替换

fasternet替换yolov5主干网络

qq_41920323的博客 5143

基于Tcp协议的应用层协议定制

本文将基于TCP协议构建一个网络计算器服务。业务逻辑相对弱化一些,目的是完整演示服务端开发的核心流程。而把重点放在应用层协议的设计过程,包括请求/响应报文结构定义、数据传输机制等关键实现细节;同时讲解Socket通信层的工程化封装,通过抽象连接建立、数据收发、资源管理等基础操作,构建可扩展的网络通信模块。

2302_80105876的博客 1755

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

基于TCP的应用层协议 与基于UDP的应用层协议分别有哪些

基于TCP的应用层协议 与基于UDP的应用层协议分别有哪些

hfuuhgcc的博客 6936

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

基于tcp的应用层协议还原

基于tcp的应用层协议还原技术是网络安全每个领域都需要的一种基础技术。 首先,我们需要认识到tcp协议的两个特征: tcp是一种流协议。发送者以字节流的形式传递给接收者。 tcp协议本身没有固有的”报文”或”报文边界”的概念。(参考:https://blog.youkuaiyun.com/gengzhikui1992/article/details/83865596) tcp协议的特征1意味着,在还原...

网络安全研究 2667

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

基于TCP协议的应用层的ACK机制

  当用TCP/IP协议进行通信时,在发送端,send首先会将数据copy到协议的缓存区,然后协议会将数据发送到接收端,接着会等待接收端协议收到数据的ack,如果没有收到ack,协议就会重发数据,在这一过程中send一直在等待,直到收到ack,当协议收到ack后才将协议缓存中的数据删除,因此从协议上来说是不会丢失数据的。 但是协议没有丢失数据并不能保证接收端应用程序就一定...

weixin_30414635的博客 761

基于TCP或UDP协议的应用层协议

TCP和UDP都是传输层协议,上面是应用层,下面是网络层TCP与UDP区别:基于TCP的应用层协议:基于UDP的应用层协议:应用层协议与其他层协议的关系大致如下: 值得注意的是,上图有一个错误,DNS协议同时使用TCP和UDP协议DNS区域传输的时候使用TCP协议:域名解析时使用UDP协议:客户端向DNS服务器查询域名,一般返回的内容都不超过512字节,用UDP传输即可。不用经过三次握手,这样DNS服务器负载更低,响应更快。理论上说,客户端也可以指定向DNS服务器查询时用TCP,但事实上,很多DNS服务器进

eyes++的博客 5471

基于TCP/UDP的应用层协议

1,基于TCP的有: Telnet(Teletype over the Network, 网络电传) ,通过一个终端(terminal)登陆到网络FTP(File Transfer Protocol, 文件传输协议) ,由名知义SMTP(Simple Mail Transfer Protocol,简单邮件传输协议) ,用来发送电子邮件POP3(Post Office Protocol 3

huangxy10的专栏 1万+

基于TCP的应用层协议、与基于UDP的应用层协议分别有哪些?

基于TCP的应用层协议、与基于UDP的应用层协议分别有哪些?   2011-11-4 14:55 提问者: li491623644 | 浏览次数:2054次| 该问题已经合并到>> 我来帮他解答 检举 | 2011-11-4 15:41 满意回答 这个有很多,你可以参考一下: 斜线前面的数字代表端口号,斜线后面表示tcp和udp,

autumn20080101的专栏 5976

理解基于 TCP 的应用层通信协议

TCP 协议示意 TCP协议 关于七层网络通信的基本原理,特别推荐这篇图文并茂的长文《TCP/IP笔记 - 综述》 TCP 通信基本特征 TCP数据流 特征 1. 消息(结构化数据)被编码成字节流写入 TCP 通道。 2. TCP 通道不能保证字节流一定到达目的地,但能保证到达的字节流是正确、有序的。对于发送端而言,可以不停的写入数据,当网络出问题 ACK 超...

每天进步一点点的专栏 3473

TCP异常的情况及基于TCP的应用层协议

TCP异常的情况 进程终止 进程终止会释放文件描述符。仍然可以发送FIN,和正常关闭没什么区别 机器重启 和进程终止的情况相同 机器掉电/网线断开 接收端认为连接还在,一旦接收端有写入操作,接收端发现连接已经不在了,就会进行reset,即使没有写入操作,TCP自己也内置一个保活定时器,定期访问对方是否还在,如果对方不在,也会把连接释放; 基于TCP的应用层协议 HTTP HTTPS SSH Telent FTP SMTP TCP一般应用于可靠性传输,应用于文件传输,重要状态更新等重要场景;UDP用于对高

零碎@流年絮语 的博客 171

基于TCP/UDP的应用层协议有那些

基于TCP/UDP的应用层协议有那些 TCP支持的应用协议主要有:Telnet、FTP、SMTP等;UDP支持的应用层协议主要有:NFS(网络文件系统)、SNMP(简单网络管理协议)、DNS(主域名称系统)、TFTP(通用文件传输协议)等。 ...

baiseda 1121

tcp 重发 应用层重传

采用TCP时,应用层需要超时重传吗? 需要,原因如下: 1 tcp的超时控制不是你能设置的,所有的tcp超时都是用系统的时间设定,而且这个时间很长,超时的结果就是断开连接。和你应用要达到的目的显然差很远 2 send的返回OK != 数据被对方成功收到 ,且,数据被对方成功受到 != 数据被对方逻辑成功处理举个极端的例子:对方收到包,但是还没来的及处理,程序崩掉了,这个时候你的网络层显示的显...

weixin_34252090的博客 495

如何设计应用层 ACK 来补充 TCP 的不足?

摘要:本文探讨了如何设计应用层ACK机制来补充TCP协议的不足。TCP ACK虽然能确保数据到达内核缓冲区,但无法确认业务处理是否成功。文章首先介绍了TCP ACK的工作原理,包括字节序号机制和累计确认规则,然后通过Go语言示例展示了TCP读写与内核ACK的关联。最后提出应用层ACK设计方案,建议在业务处理成功后发送应用层ACK,以确保业务可靠性,并给出了包含消息头结构的简单协议示例。

不会写DN的博客 1004
上一篇: TCP和UDP总结
下一篇: 网络基础总结
ituling
博客等级 码龄15年 6粉丝 11原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值