TCP/IP协议详解内容提要TCP/UDPDNSSNMPIPv6TCP/UDP面向连接与面向无连接端口三次握手TCP报文格式UDP报文格式端口端口将应用进程与IP网络相关联,是应用进程的地址标识。一个端口是一个16位号码。端口分为公用和临时两种:公用端口:属于标准服务器,由权威机构IANA统一分配,从1~1023。临时端口:用于客户,从1024~65535。协议端口号关键字描述UDP42NAMESERVER主机名字服务器UDP53DOMAIN域名服务器UDP67BOOTPClient客户端启动协议服务UDP68BOOTPServer服务器端启动协议服务UDP69TFTP简单文件传输协议UDP111RPC微系统公司RPCTCP20FTPData文件传输服务器(数据连接)TCP21FTPControl文件传输服务器(控制连接)TCP23Telnet远程终端服务器TCP25SMTP简单邮件传输协议TCP80HTTP超文本传输协议Socket套接字为了使得多主机多进程通信时,不至于发生混乱情况,必须把端口号和主机的IP地址结合起来使用,称为插口或套接字(Socket)。由于主机的IP地址是唯一的,这样目的主机就可以区分收到的数据报的源端机了。套接字包括IP地址(32位)和端口号(16位),共48位。例如(124.33.13.55,200)和(126.45.21.51,25)就是一对套接字,在整个Internet中,在传输层上进行通信的一对套接字都必须是唯一的。Netstat-an查看主机网络连接状态TCP连接的建立第一次握手:客户端TCP首先给服务器端TCP发送一个特殊的TCP数据段。该数据段不包含应用层数据,并将头部中的SYN位设置为1,所以该数据段被称为SYN数据段。另外,客户选择一个初始序列号SEQ,设SEQ=x并将这个编号放到初始的TCPSYN数据段的序列号字段中。该数据段被封装到一个IP数据报中,并发送给服务器。第二次握手:一旦装有TCPSYN数据段的IP数据报到达了服务器主机,服务器将从该数据报中提取出TCPSYN数据段,给该连接分配TCP缓冲区和变量,并给客户TCP发送一个允许连接的数据段。这个允许连接的数据段也不包含任何应用层数据。但是,它的头部中装载着3个重要信息。首先,SYN被设置为1;其次,TCP数据段头部的确认字段被设置为x+1;最后,服务器选择自己的初始顺序号,SEQ=y,并将该值放到TCP数据段头部的序列号字段中。第三次握手:在接收到允许连接数据段之后,客户也会给连接分配缓冲区和变量。客户端主机还会给服务器发送另一个数据段,对服务器的允许连接数据段给出确认。三次握手TCP协议中连接建立的过程SYN(SEQ=x)SYN(SEQ=y)ACK=x+1REJECTSYN(SEQ=x)SYN(SEQ=y)ACK=x+1ACK=zREJECT异常情况主机1主机2主机1主机2呼叫碰撞的情况主机1主机2SYN(SEQ=x)SYN(SEQ=y)SYN(SEQ=y,ACK=x+1)SYN(SEQ=x,ACK=y+1)连接的释放第一次握手:由进行数据通信的任意一方提出要求释放连接的请求报文段。第二次握手:接收端收到此请求后,会发送确认报文段,同时当接收端的所有数据也都已经发送完毕后,接收端会向发送端发送一个带有其自己序号的报文段。第三次握手:发送端收到接收端的要求释放连接的报文段后,发送反向确认。主机A主机BFIN,SEQ=x①ACK=x+1②FIN,SEQ=y,ACK=x+1③ACK=y+1④TCP连接的释放过程源端口32bit目的端口序列号确认号数据偏移首部长度保留URGACKPSHRSTSYNFIN窗口校验和紧急指针任意选项(如果有的话)填充数据图3.22TCP报文段格式TCP数据报文TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充源端口和目的端口字段——各占2字节。标识了发送方和接收方的应用进程。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充序号字段——占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充确认号字段——占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充数据偏移——占4bit,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充保留字段——占6bit,保留为今后使用,但目前应置为0。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充紧急比特URG——当URG1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充确认比特ACK——只有当ACK1时确认号字段才有效。当ACK0时,确认号无效。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充推送比特PSH(PuSH)——接收TCP收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充复位比特RST(ReSeT)——当RST1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,通知一下对方。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充同步比特SYN——同步比特SYN置为1,就表示这是一个连接请求或连接接受报文。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充终止比特FIN(FINal)——用来释放一个连接。当FIN1时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充窗口字段——占2字节。窗口字段用来控制对方发送的数据量,单位为字节。TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充检验和——占2字节。检验和字段检验的范围包括首部和数据和伪段头(不是TCP里的信息,但是计算校验和的时候也计算了的内容:IP地址,TCP数据段长度,协议类型)。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充紧急指针字段——占16bit。紧急指针指出在本报文段中的紧急数据的位置。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充选项字段——长度可变。TCP规定了二种选项,最大报文段长度MSS(MaximumSegmentSize)。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节。”和窗口扩大因子,用于扩大接收方窗口。MSS是TCP报文段中的数据字段的最大长度。数据字段加上TCP首部才等于整个的TCP报文段。TCP首部20字节固定首部目的端口数据偏移检验和选项(长度可变)源端口序号紧急指针窗口确认号保留FINSYNRSTPSHACKURG比特08162431填充填充字段——这是为了使整个首部长度是4字节的整数倍。UDP报文头结构IPv6IPv4的不足地址基本耗尽,这是当前最棘手的问题路由表越来越大功能不足,缺少对多媒体信息传输的支持缺少对安全的支持缺少对主机漫游的支持IPv6的主要改进更大的地址空间:128位灵活的首部格式:用一系列固定格式的扩展首部取代了IPv4中可变长度的选项字段简化了协议:如取消了首部的校验和字段,分段只能在源端进行允许对网络资源的预分配,支持实时图像等要求保证一定的带宽和时延的应用允许协议继续演变,增加新的功能IPv6数据包格式扩展头部域名为了使用和记忆方便,因特网还采用了域名管理系统,简称DNS(DomainNameSystem),在IP地址之外,网上的计算机还有另一种表示法:域名,它是由代表一定意义的英文单词的缩写构成,如:域名结构域名是一种按一定规律书写的、用户容易理解、容易记忆的Internet地址。Internet上一台主机的主机名是由它所属的各级域的域名和分配给该主机的名字共同构成的。书写的时候,顶级域名放在最右面,各级名字之间有“.”隔开。域名是有层次的。Internet主机域名的一般格式为:四级域名.三级域名.二级域名.顶级域名(并不一定分四级)如:。顶级的域名划分采用了两种模式:地理模式、组织模式因特网的名字空间comnetorgedugovmilcoopbizinfoaerointcnuk…hkjsshbjorgnetgoveducomac…pkufudansjtutsinghua…树根cctvibmhpmot…顶级域名二级域名三级域名mailep四级域名mailcsnetl……seu1、地理模式顶级域名表示国家,次级域名表示该网络的属性。见下表所示:顶级域名所表示的国家或地区顶级域名所表示的国家或地区顶级域名所表示的国家或地区au澳大利亚ca加拿大ch瑞士cn中国cu古巴De德国dk丹麦es西班牙fr法国hk香港in印度It意大利jp日本mo澳门se瑞典sg新加坡tw台湾us美国2、组织模式在组织模式中,顶级域名表示该网络的属性顶级域名表示的网络属性顶级域名表示的网络属性顶级域名表示的网络属性Com盈利的商业实体mil军事机构或组织Store商场Edu教育机构或设施net网络资源或组织Wb和消遣性娱乐常见七类机构性顶级域名COM商业机构,EDU教育机构,INT国际机构,GOV政府机构,MIL军事机构,NET网络机构,