首页 > 其他分享 >TCP/IP详解

TCP/IP详解

时间:2023-08-09 17:46:33浏览次数:32  
标签:多播 UDP IP 00 TCP 地址 详解 数据

第十一章 UDP

UDP是一个简单的面向数据报的运输层协议:进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。这与面向流字符的协议不同,如TCP,应用程序产生的全体数据与真正发送的单个IP数据报可能没有什么联系。

UDP首部

 UDP检验和

UDP检验和覆盖UDP首部和UDP数据。

UDP和TCP在首部中都有覆盖它们首部和数据的检验和。UDP的检验和是可选的,而TCP的检验和是必需的

IP分片

 

IP把MTU与数据报长度进行比较,如果需要则进行分片。分片可以发生在原始发送端主机上,也可以发生在中间路由器上。

重新组装由目的端的IP层来完成,其目的是使分片和重新组装过程对运输层(TCP和UDP)是透明的,除了某些可能的越级操作外。已经分片过的数据报有可能会再次进行分片(可能不止一次)。IP首部中包含的数据为分片和重新组装提供了足够的信息。

IP数据报是指IP层端到端的传输单元(在分片之前和重新组装之后),分组是指在IP层和链路层之间传送的数据单元。一个分组可以是一个完整的IP数据报,也可以是IP数据报的一个分片。

 ICMP不可达差错(需要分片)

 UDP和URP之间的相互作用
ARP洪泛(ARP flooding,即以高速率重复发送到同一个IP地址的ARP请求)。建议最高速率是每秒一次。

最大UDP数据报长度

UDP数据报中用户数据的最长长度为65507字节。但是,大多数实现所提供的长度比这个最大值小。

  • 应用程序可能会受到其程序接口的限制。
  • TCP/IP的内核实现。

ICMP源站抑制差错

 

 

客户IP地址及端口号

来自客户的是UDP数据报。IP首部包含源端和目的端IP地址,UDP首部包含了源端和目的端的UDP端口号。当一个应用程序接收到UDP数据报时,操作系统必须告诉它是谁发送了这份消息,即源IP地址和端口号

目的IP地址

一些应用程序需要知道数据报是发送给谁的,即目的IP地址

UDP输入队列

来自不同客户的差不多同时到达的请求将由UDP自动排队。接收到的UDP数据报以其接收顺序交给应用程序(在应用程序要求交送下一个数据报时)

 

 

第十二章广播与多播

有三种IP地址:单播地址、广播地址和多播地址。

广播和多播仅应用于UDP,它们对需将报文同时传往多个接收者的应用来说十分重要。

TCP是一个面向连接的协议,它意味着分别运行于两主机(由IP地址确定)内的两进程(由端口号确定)间存在一条连接。

通常每个以太网帧仅发往单个目的主机,目的地址指明单个接收接口,因而称为单播(unicast)。在这种方式下,任意两个主机的通信不会干扰网内其他主机(可能引起争夺共享信道的情况除外)。

有时一个主机要向网上的所有其他主机发送帧,这就是广播。

多播(multicast)处于单播和广播之间:帧仅传送给属于多播组的多个主机

 受限的广播

 受限的广播地址是255.255.255.255。该地址用于主机配置过程中IP数据报的目的地址,此时,主机可能还不知道它所在网络的网络掩码,甚至连它的IP地址也不知道

指向网络的广播

指向网络的广播地址是主机号为全1的地址。A类网络广播地址为netid.255.255.255,其中netid为A类网络的网络号。

一个路由器必须转发指向网络的广播,但它也必须有一个不进行转发的选择

指向子网的广播

指向子网的广播地址为主机号为全1且有特定子网号的地址

指向所有子网的广播

指向所有子网的广播也需要了解目的网络的子网掩码,以便与指向网络的广播地址区分开。指向所有子网的广播地址的子网号及主机号为全1

 

 

多播

IP多播提供两类服务:

    向多个目的地址传送数据。有许多向多个接收者传送信息的应用:例如交互式会议系统和向多个接收者分发邮件或新闻。如果不采用多播,目前这些应用大多采用TCP来完成(向每个目的地址传送一个单独的数据复制)。然而,即使使用多播,某些应用可能继续采用TCP来保证它的可靠性。
    客户对服务器的请求。例如,无盘工作站需要确定启动引导服务器。目前,这项服务是通过广播来提供的(正如第16章的BOOTP),但是使用多播可降低不提供这项服务主机的负担。

多播组地址

 多播地址到以太网地址的转换

IANA拥有一个以太网地址块,即高位24 bit为00:00:5e(十六进制表示),这意味着该地址块所拥有的地址范围从00:00:5e:00:00:00到00:00:5e:ff:ff:ff。IANA将其中的一半分配为多播地址。为了指明一个多播地址,任何一个以太网地址的首字节必须是01,这意味着与IP多播相对应的以太网地址范围从01:00:5e:00:00:00到01:00:5e:7f:ff:ff。

 

第十四章域名系统

DNS基础

 

顶级域名被分为三个部分:

  1. arpa是一个用作地址到名字转换的特殊域(我们将在14.5节介绍)。
  2. 7个3字符长的普通域。有些书也将这些域称为组织域。
  3. 所有2字符长的域均是基于ISO3166中定义的国家代码,这些域被称为国家域,或地理域

 

 

 

 DNS报文格式

 

 QR是1bit字段:0表示查询报文,1表示响应报文。
opcode是一个4bit字段:通常值为0(标准查询),其他值为1(反向查询)和2(服务器状态请求)。
AA是1bit标志,表示“授权回答(authoritative answer)”。该名字服务器是授权于该域的。
TC是1bit字段,表示“可截断的(truncated)”。使用UDP时,它表示当应答的总长度超过512字节时,只返回前512个字节。
RD是1bit字段表示“期望递归(recursion desired)”。该比特能在一个查询中设置,并在响应中返回。这个标志告诉名字服务器必须处理这个查询,也称为一个递归查询。如果该位为0,且被请求的名字服务器没有一个授权回答,它就返回一个能解答该查询的其他名字服务器列表,这称为迭代查询。在后面的例子中,我们将看到这两种类型查询的例子。
RA是1bit字段,表示“可用递归”。如果名字服务器支持递归查询,则在响应中将该比特设置为1。在后面的例子中可看到大多数名字服务器都提供递归查询,除了某些根服务器。随后的3bit字段必须为0。
rcode是一个4bit的返回码字段。通常的值为0(没有差错)和3(名字差错)。名字差错只有从一个授权名字服务器上返回,它表示在查询中制定的域名不存在。

 

DNS查询报文中的问题部分

 

 

 

 查询名是要查找的名字,它是一个或多个标识符的序列。
每个标识符以首字节的计数值来说明随后标识符的字节长度,每个名字以最后字节为0结束,长度为0的标识符是根标识符。
计数字节的值必须是0~63的数,因为标识符的最大长度仅为63(在本节的后面我们将看到计数字节的最高两比特为1,即值192~255,将用于压缩格式)。
不像我们已经看到的许多其他报文格式,该字段无需以整32 bit边界结束,即无需填充字节

 

 DNS响应报文中的资源记录部分

 域名是记录中资源数据对应的名字。它的格式和前面介绍的查询名字段格式(图14-6)相同。
类型说明RR的类型码。它的值和前面介绍的查询类型值是一样的。类通常为1,指Internet数据。
生存时间字段是客户程序保留该资源记录的秒数。资源记录通常的生存时间值为2天。
资源数据长度说明资源数据的数量。该数据的格式依赖于类型字段的值。对于类型1(A记录)资源数据是4字节的IP地址

第十五章TFTP

TFTP(Trivial File Transfer Protocol)即简单文件传送协议,最初打算用于引导无盘系统(通常是工作站或X终端)。和将在第27章介绍的使用TCP的文件传送协议(FTP)不同,为了保持简单和短小,TFTP将使用UDP。TFTP的代码(和它所需要的UDP、IP和设备驱动程序)都能适合只读存储器

 最后一种 TFTP报文类型是差错报文,它的操作码为 5。它用于服务器不能处理读请求或写请求的情况。在文件传输过程中的读和写差错也会导致传送这种报文,接着停止传输。差错编号字段给出一个数字的差错码,跟着是一个 ASCII表示的差错报文字段,可能包含额外的操作系统说明的信息。
既然TFTP使用不可靠的 UDP,TFTP就必须处理分组丢失和分组重复。分组丢失可通过发送方的超时与重传机制解决(注意存在一种称为“魔术新手综合症 ( sorcerer’s apprentices y n drome)”的潜在问题,如果双方都超时与重传,就可能出现这个问题。 12.2 节 [ S t e v e n s1990] 介绍了这个问题是如何发生的 )。和许多 U D P应用程序一样, TFTP报文中没有检验和,它假定任何数据差错都将被 UDP的检验和检测到

 

安全性

TFTP分组中并不提供用户名和口令。这是TFTP的一个特征(即“安全漏洞”)。由于TFTP是设计用于系统引导进程,它不可能提供用户名和口令。

标签:多播,UDP,IP,00,TCP,地址,详解,数据
From: https://www.cnblogs.com/Redamacy/p/17617040.html

相关文章

  • SpringMVC支持跨域访问详解
    跨站HTTP请求(Cross-siteHTTPrequest)是指发起请求的资源所在域不同于该请求所指向资源所在的域的HTTP请求。这里有域名的不同,端口号的不同。很多浏览器在发起跨域访问时是会询问用户是否需要发送该请求,或者干脆不发送跨域访问请求。(最好的办法是不使用ajax之类的,不要在前端......
  • HTTP代理IP:隐匿身份、突破限制的利器
    什么是HTTP代理IP    HTTP代理IP是一种通过代理服务器转发请求的IP地址。当我们使用HTTP代理IP时,我们的网络请求不会直接发送给目标网站,而是先发送给代理服务器,然后由代理服务器再将请求发送给目标网站。这样,目标网站在接收请求时,会认为请求来自代理服务器的IP地址,而不是我......
  • 快速了解JavaScript的JSON
    JSON是用于存储和传输数据的格式。JSON通常用于服务端向网页传递数据。1什么是JSON?JSON英文全称 JavaScript Object NotationJSON是一种轻量级的数据交换格式。JSON是独立的语言 *JSON易于理解。2JSON语法基本上JSON对象就是基于JavaScript对象,因......
  • 【Spring | 事件监听详解】
    上篇Spring事件监听概述对Spring事件监听的机制有了个基本的了解。本篇来详细的解读下Spring的事件监听机制。(事件监听详解)ApplicationEvent  ApplicationEvent最重要的子类是ApplicationContextEvent抽象类,ApplicationContextEvent是spring容器Context生命周期......
  • 详解inline-block
    曾几何时,display:inline-block已经深入「大街小巷」,随处可见「display:inline-block;*display:inline;*zoom:1;」这样的代码。如今现代浏览器已经全面支持这个属性值了,上面的代码只是为了兼容IE6、7而已。那么你真的了解inline-block了吗?本文将带你深入剖析该属性值的前世......
  • Linux 释放IP重新获取
    命令格式:dhclient[options][if0[...ifN]]选项说明:-4 使用DHCPv4。-6 使用DHCPv6。-p<port-number> 指定DHCP客户端监听的端口号(默认端口号86)。-d 总是以前台方式运行程序。-q 安静模式,不打印任何错误的提示信息。这是默认行为。-v 启用详细日志消息。-......
  • JavaScript用法
    JavaScript用法HTML中的JavaScript脚本代码必须位于<script>和</script>标签之间。Javascript脚本代码可被放置在HTML页面的<body>和<head>部分中。<script>标签<script>和</script>之间的代码包含了JavaScript<!DOCTYPEhtml><htmllang="en">......
  • JavaScript:表单生成器
    JavaScript:表单生成器一条小橘猫于2021-12-0116:10:56发布3393收藏38分类专栏:JavaScript文章标签:经验分享javajavascripthtml前端版权华为云开发者联盟该内容已被华为云开发者联盟社区收录加入社区JavaScript专栏收录该内容45篇文章55订阅已订阅表单属性有姓......
  • centos7环境- ipaddr使用
    yumcleanallwget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.repoyummakecacheyumupdate-yyum-yinstallinitscriptsyumcleanall:这个命令用于清理YUM软件包管理器的缓存。YUM会在本地存储已下载的软件包,以便稍后安装或更......
  • Cypher中多个match表示pipe效果 一个match查询结果给另外一个match使用
    https://neo4j.com/docs/cypher-manual/current/clauses/optional-match/OPTIONALMATCHIntroductionOPTIONALMATCH matchespatternsagainstagraphdatabase,justas MATCH does.Thedifferenceisthatifnomatchesarefound, OPTIONALMATCH willusea......