我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:四肖中特 > 反向掩码 >

【网络】网络的基础知识--TCPIP协议、IP分组、TCP传输

归档日期:05-11       文本归类:反向掩码      文章编辑:爱尚语录

  。一般都称为OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型。该体系结构标准定义了网络互连的七层框架(物理层、数据链路层、网络层、传输层、会话层、表示层和应用层),即ISO开放系统互连参考模型。的低三层,负责创建网络通信连接的链路;第四层到第七层为OSI参考模型的高四层,具体负责端到端的数据通信。在这一框架下进一步详细规定了每一层的功能,以实现开放系统环境中的互连性、互操作性和应用的可移植性。

  OSI参考模型中,对等层协议之间交换的信息单元统称为协议数据单元(PDU,Protocol Data Unit)。

  传输层——数据段(Segment) 网络层——分组(数据包)(Packet) 数据链路层——数据帧(Frame) 物理层——比特(Bit)

  TCP/IP参考模型是计算机网络的祖父ARPANET和其后继的因特网使用的参考模型。ARPANET是由美国国防部DoD(U.S.Department of Defense)赞助的研究网络。逐渐地它通过租用的电话线连结了数百所大学和政府部门。当无线网络和卫星出现以后,现有的协议在和它们相连的时候出现了问题,所以需要一种新的参考体系结构。这个体系结构在它的两个主要协议出现以后,被称为TCP/IP参考模型(TCP/IP reference model)。

  TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层(从下到上分为第一、二、三、四层的),IP位于协议簇的第二层(对应OSI的第三层:网络层),TCP位于协议簇的第三层(对应OSI的第四层:传输层)。TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:

  应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。

  传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。

  互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。

  网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。

  OSI七层模型结构的协议体系结构结构完整,概念明确,但其只能算是理想的一种体系结构,在实际应用中显得发杂,定义的层数越多,实现的难度也就随之越大,所以TCP/IP的四层模型结构成了至今被大量运用的网络体系的模型结构,但这并不意味着OSI就被搁置一旁甚至弃而不用。

  2)、TCP/IP参考模型的网络接口层实际上并没有真正的定义,只是一些概念性的描述。而OSI参考模型不仅分了两层,而且每一层的功能都很详尽,            甚至在数据链路层又分出一个介质访问子层,专门解决局域网的共享介质问题。

  3)、OSI模型是在协议开发前设计的,具有通用性。TCP/IP是先有协议集然后建立模型,不适用于非TCP/IP网络。

  4)、OSI参考模型与TCP/IP参考模型的传输层功能基本相似,都是负责为用户提供真正的端对端的通信服务,也对高层屏蔽了底层网络的实现细节。            所不同的是TCP/IP参考模型的传输层是建立在网络互联层基础之上的,而网络互联层只提供无连接的网络服务,所以面向连接的功能完全在TCP          协议中实现,当然TCP/IP的传输层还提供无连接的服务,如UDP;相反OSI参考模型的传输层是建立在网络层基础之上的,网络层既提供面向连          接的服务,又提供无连接的服务,但传输层只提供面向连接的服务。

  5)、OSI参考模型的抽象能力高,适合与描述各种网络;而TCP/IP是先有了协议,才制定TCP/IP模型的。

  6)、OSI参考模型的概念划分清晰,但过于复杂;而TCP/IP参考模型在服务、接口和协议的 区别上不清楚,功能描述和实现细节混在一起。

  7)、TCP/IP参考模型的网络接口层并不是真正的一层;OSI参考模型的缺点是层次过多,划分意义不大但增加了复杂性。

  8)、OSI参考模型虽然被看好,由于技术不成熟,实现困难;相反,TCP/IP参考模型虽然有许多不尽人意的地方,但还是比较成功的。

  关于TCP/IP的四层模型结构,也可以是五层结构,即在最底层加上了物理层,因为物理层注重的是信号的传递以及具有某些电机特性,所以严格的来讲,应该将其加上,放在网络接口层的下层位置。

  指的是电信号传递方式,比如现在以太网通用的网线(双绞线)、早期以太网采用的同轴电缆(现在主要用于有线电视)、光纤等都属于物理层的概念。 物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)是工作在物理层的网络设备,用于双绞线的连接和信号中继(将已衰减的信号再次放大使之传得更远)。

  链路层有以太网、令牌环网等标准。链路层负责网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、 数据差错校验等工作。交换机是工作在链路层的网络设备,可以在不同的链路层网络之间转发数据帧(比如十兆以太网和百兆以太网之间、以太网和令牌环网之间),由于不同链路层的帧格式不同,交换机要将进来的数据包拆掉链路层首部重新封装之后再转发。

  网络层的IP协议是构成Internet的基础。Internet上的主机通过IP地址来标识,Internet上有大量路由器负责根据IP地址选择合适的路径转发数据包,数据包从Internet上的源主机到目的主机往往要经过十多个路由器。路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包。因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。IP 协议不保证传输的可靠性,数据包在传输过程中可能丢失,可靠性可以在上层协议或应用程序中提供支持。

  负责点到点的传输(这里的“点”指主机或路由器),而传输层负责端到端 (end-to-end)的传输(这里的“端”指源主机和目的主机)。

  该层定义了两个重要的协议,即传输控制协议(TCP)或用户数据报协议(UDP)。TCP是一种面向连接的、可靠的协议。就像打电话,双方拿起电话互通身份之后就建立了连接,然后说话就行了,这边说的话那边保证听得到,并且是按说话的顺序听到的,说完话挂机断开连接。也就是说TCP传输的双方需要首先建立连接,之后由TCP协议保证数据收发的可靠性,丢失的数据包自动重发,上层应用程序收到的总是可靠的数据流,通讯之后关闭连接。UDP协议不面向连接,也不保证可靠性,有点像寄信,写好信放到邮筒里,既不能保证信件在邮递过程中不会丢失,也不能保证信件是按顺序寄到目的地的。使用UDP协议的应用程序需要自己完成丢包重发、消息排序等工作。

  为用户提供各种所需的服务。比如:FTP,DNS,Telnet,SMTP等。

  关于两台计算机通过TCP/IP协议通讯的过程(局域网的两个主机可以通信)见下图:

  只有应用层由用户提供,传输层及其以下的机制由内核提供。应用程序对通讯数据的含义进行解释,而传输层及其以下的机制处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。

  应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示:

  应用层将数据通过TCP/IP协议栈逐层向下传递,其下的每层接到来自上层的数据时,根据每层的协议都要在其数据的前端添加首部信息进行封装。不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报(datagram),在链路层叫做帧(frame)。在经过链路层时,数据封装成帧后发给物理层的传输介质上,到达目标主机后,每层协议再逐层剥掉其首部,最后递交给目标主机应用层,进行应用程序处理,数据与源主机发送的数据一致。

  每层都将数据包分为:有效头部信息和有效载荷(数据)。对于有效数据称之为“有效载荷”,添加的部分称其为“报头”。下层收到来自上层交付的数据时,对于下层来说并不关心其具体内容,因为站在当前层的角度来看,此时已添加上层报头信息的数据整个都被视为有效载荷,当前层要做的只是继续封装该数据,即添加自己的报头。而解包的过程亦是如此,每层只负责剥离自己能识别的报头信息。任何数据报中的报头信息必须包含上层协议,即要把当前的有效载荷交付给上层的谁。

  上图适应两台计算机在同一网段的情况,如果是不同网段,从源主机到目标主机间的数据传输则须经过一个或多个路由器,以实现数据的跨网络传输。

  路由器是工作在第三层的网络设备,同时兼有交换机的功能,可以在不同的链路层接口之间转发数据包。因此路由器需要将进来的数据包拆掉网络层和链路层两层首部并重新封装。在此过程中,仍认为在同一层进行了网络连接。

  目的主机收到数据包后,如何经过各层协议栈最后到达应用程序呢?整个过程如下图所示

  1、以太网驱动程序根据以太网首部中的“上层协议”字段确定该数据帧的有效载荷(指除去协议首部之外实际传输的数据)是IP、ARP还是RARP协议的数据报。

  2、交给相应的协议处理。假如是IP数据报,IP协议再根据IP首部中的“上层协议”字段确定该数据报的有效载荷是TCP、UDP、ICMP还是IGMP ,然后交给相应的协议处理。假如是TCP段或UDP段,TCP或UDP协议再根据TCP首部或UDP首部的“端口号”字段确定应该将应用层数据交给哪个用户进程。

  IP 地址是标识网络中特定主机的地址,而端口号就是同一台主机上标识特定进程的地址,IP 地址和端口号合起来标识网络中唯一的进程。

  虽然IP、ARP和RARP数据报都需要以太网驱动程序来封装成帧,但是从功能上划分,ARP和RARP属于链路层,IP属于网络层。虽然ICMP、IGMP、TCP、UDP的数据都需要IP协议来封装成数据报,但是从功能上划分,ICMP、IGMP与IP同属于网络层,TCP和UDP属于传输层。

  其中的源地址和目的地址是指网卡的硬件地址(也叫MAC地址),长度是48位(12个字节),是在网卡出厂时固化的。

  帧协议类型字段有三种值,分别对应IP、ARP、RARP,而后是有效载荷的大小(数据长度)。帧末尾是CRC校验码,用于差错校验的。

  帧协议其类型值分别为0800的IP协议,0806的ARP协议,0835的RARP协议。

  以太网帧中的数据长度规定最小46字节,最大1500字节,ARP和RARP数据包的长度不够46字节,要在后面补填充位。

  最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU,如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据包进行分片(fragmentation)。ifconfig命令的输出中也有“MTU:1500”。注意,MTU这个概念指数据帧中有效载荷的最大长度,不包括帧首部的长度。

  概念:ARP协议原名为“地址解析协议”,是根据IP地址获取物理地址的一个TCP/IP协议。主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址。收到返回消息后将该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存以节约资源。

  每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的主机的硬件地址。

  源MAC地址、目的MAC地址在以太网首部和ARP请求各出现一次,对于链路层为以太网的情况是多余的,但如果链路层是其它类型的网络则有可能是必要的。帧协议类型字段有三种值,分别对应IP、ARP、RARP。硬件类型指链路层网络类型,1为以太网。协议类型指要转换的地址类型,0x0800为IP地址。后面两个地址长度对于以太网地址和IP地址分别为6和4(字节),即0604。op字段:op字段为1表示ARP请求,op字段为2表示ARP应答。

  原名为“反向地址解析协议”,允许局域网的物理机器从网关服务器的ARP表或者缓存上请求其IP地址。网络管理员在局域网网关路由器里创建一个表以映射物理地址(MAC)和与其对应的IP地址。当设置一台新的机器时,其RARP客户机程序需要向路由器上的 RARP 服务器请求相应的IP地址。假设在路由表中已经设置了一个记录,RARP 服务器将会返回 IP 地址给机器,此机器就会存储起来以便日后使用。

  ARP(地址解析协议)是设备通过自己知道的IP地址来获得自己不知道的物理地址的协议。假如一个设备不知道它自己的IP地址,但是知道自己的物理地址,设备知道的只是网络接口卡上的物理地址时,又该怎么办呢? 为解决这种情况,就有了与ARP对应的RARP协议。

  RARP以与ARP相反的方式工作。RARP发出要反向解析的物理地址并希望返回其对应的IP地址,应答包括由能够提供所需信息的RARP服务器发出的IP地址。虽然发送方发出的是广播信息,RARP规定只有RARP服务器能产生应答。许多网络指定多个RARP服务器,这样做既是为了平衡负载也是为了作为出现问题时的备份。

  IP数据报的首部长度和数据长度都是可变长的,但总是4字节的整数倍。对于IPv4 ,4位版本字段是4。4位首部长度的数值是以4字节为单位的,最小值为5,也就是首部长度最小是4x5=20字节, 也就是不带任何选项的IP首部,4位能表示的最大值是15,也就是首部长度最大是60字节。8位TOS字段有3个位用来指定IP数据报的优先级(目前已经废弃不用),还有4个位表示可选的服务类型(最小延迟、最大呑吐量、最大可靠性、最小成本),还有一个位总是0。

  16位总长度是整个数据报(包括IP首部和IP层payload)的字节数。16位标识:每传一个IP数据报,16位的标识加1,可用于分片和重新组装数据报。

  TTL(Time to live)是这样用的:源主机为数据包设定一个生存时间,比如64,每过一个路由器就把该值减1,如果减到0就表示路由已经太长了仍然找不到目的主机的网络,就丢弃该包,因此这个生存时间的单位不是秒,而是跳(hop)。协议字段指示上层协议是TCP、UDP、ICMP还是IGMP。然后是校验和,只校验IP首部,数据的校验由更高层协议负责。IPv4的IP地址长度为32位。

  2)、不分片位(no not fragment,DF位)。DF=0表示可以分片;DF=1表示接受主机对分组不能分片。如果长度超过MTU(最大传输单元)而又不可以分片的话,那么只能丢弃该组,并且用ICMP差错报文向源主机报告。

  3)、分片位(More fragment,MF位)。该位表示是否是最后一个分片,MF=1表示接收的分组不是最后一片,否则表示是最后一片。

  1)、检查DF标志位,检查是否允许分片。如果设置了该位,则数据报将被丢弃,并将一个ICMP错误返回给源主机。

  2)、基于MTU,确定片长度,将数据长度分为若干部分。(除了最后的数据部分,所有新建的数据选项的长度必须是8个字节的整数倍。)

  3)、每个数据部分被放入一个IP数据报,这些数的数据报的报头略微修改了原来的报文头。

  5)、每个分片的偏移量字段设置为这个数据部分在原来的数据报所占的位置,这个位置相当于原来未分片的数据报的开头处。

  6)、如果在原来的数据报中包括了选项,则选项类型字节的高位字节决定了这个信息是被复制到所有的分片数据段,还是只复制到了第一个数据报。

  4)、具有组装超时机制,如果在重组完成之前定时器溢出,则删除该数据报的所有内容。

  IP没经过一个路由器,TTL数就会减一,如果最后TTL为0了,但是依然没有到达目的地,这个IP包将会被丢弃。这样做了目的是为了防止出现循环回路。并且最后一跳的路由器会发送一个ICMP不可达的数据包给源IP。

  IP数据包的长度为16,也就是说最大为65535个字节。但是我们知道数据链路层规定MTU最大传输单元为1500个字节。当IP数据包的大小超过了1500,IP数据包必须要进行分片处理。这还只是初始发送端的分片,在网络中如果某个路由器的MTU小于1500,那么还需要在路由器端做分片,这就给IP包的完整接收照成了很大的不确定性(我们知道数据包达到终点不一定是按照顺序的),因为万一某一个分片丢失,可能会造成真个IP重传,当然前提是高层协议支持重传。对于TCP协议,不存在分片的问题,因为TCP报头的选项字段有MSS字段,规定一个TCP包最大可传输的字节数,一般是1500-20-20=1460字节。也就是说到达IP封包的时候最大可承载数据只有1460个字节,这样就可以避免分片的问题。但是对于UDP这一类的协议,分片操作还是交给IP完成,虽然这样可以增加载荷的效率,但是稳定性会受到很大的影响。

  IP地址分为5类:(IPv4的IP地址长度为4字节,通常采用点分〸十进制表示法)

  IP地址与子网掩码做与运算可以得到网络号,主机号从全0到全1就是子网的地址范围。

  127.*的IP地址用于本机环回(loop back)测试,通常是127.0.0.1。loopback是系统中一种特殊的网络设备,如果发送数据包的目的地址是环回地址或者与本机其它网络设备的IP地址相同,则数据包不会发送到网络介质上,而是通过环回设备再发回给上层协议和应用程序,主要用于测试。

  目的地址为255.255.255.255 ,表示本网络内部广播,路由器不转发这样的广播数据包。

  主机号全为0的地址只表示网络而不能表示某个主机,如192.168.10.0(假设子网掩码 为255.255.255.0)。

  目的地址的主机号为全1,表示广播至某个网络的所有主机,例如目的地址192.168.10.255表示广播至192.168.10.0网络(假设子网掩码为255.255.255.0)。

  路由表:由很多路由条目组成,每个条目都指明去往某个网络的数据包应该经由哪个接口发送,其中最后一条是缺省路由条目。路由条目路由表中的一行,每个条目主要由目的网络地址、子网掩码、下一跳地址、发送接口四部分组成,如果要发送的数据包的目的网络地址匹配路由表中的某一行,就按规定的接口发送到下一跳地址。缺省路由条目路由表中的最后一行,主要由下一跳地址和发送接口两部分组成,当目的地址与路由表中其它行都不匹配时,就按缺省路由条目规定的接口发送到下一跳地址。

  路由是从寻找目标网络开始的,对于路由来说其找寻目标网络地址一般有三种可能:

  1、知道,但当前网段找不到(送至下一路由);2、不知道,也找不到。(送至默认网关);3、知道,也能在当前网段找到。

  IP数据报中存有目标IP地址,所以当路由获得该地址时,通过与子网掩码的“与”操作,便能得到一个网络号,将其与路由表中的目标地址(Destination)条目进行逐一比对,如果比对成功则通过该网络号对应的发送接口(UseIface)发出;若未匹配到,则说明不在该局域网络,须将其从eth0的发送接口发出,将其送至默认网关处,再由其路由表决定下一跳的地址。

  UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。在OSI模型中,在第四层的传输层,处于IP协议的上一层。UDP有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天UDP仍然不失为一项非常实用和可行的网络传输层协议。

  UDP协议不面向连接,也不保证传输的可靠性。例如:发送端的UDP协议层只管把应用层传来的数据封装成段交给IP协议层就算完成任务了,如果因为网络故障该段无法发到对方,UDP协议层也不会给应用层返回任何错误信息。接收端的UDP协议层只管把收到的数据根据端口号交给相应的应用程序就算完成任务了,如果发送端发来多个数据包并且在网络上经过不同的路由,到达接收端时顺序已经错乱了,UDP协议层也不保证按发送时的顺序交给应用层。通常接收端的UDP协议层将收到的数据放在一个固定大小的缓冲区中等待应用程序来提取和处理,如果应用程序提取和处理的速度很慢,而发送端发送的速度很快,就会丢失数据包,UDP协议层并不报告这种错误。因此,使用UDP协议的应用程序必须考虑到这些可能的问题并实现适当的解决方案,例如等待应答、超时重发、为数据包编号、流量控制等。一般使用

  UDP协议的应用程序实现都比较简单,只是发送一些对可靠性要求不高的消息,而不发送大量的数据。例如,基于UDP的TFTP协议一般只用 trivial ftp TCP FTP于传送小文件,而基于TCP的协议适用于各种文件的传输。

  UDP协议的特点:UDP使用底层的互联网协议来传送报文,同IP一样提供不可靠的无连接数据包传输服务。它不提供报文到达确认、排序、及流量控制等功能。

  这里主要说一下六个标志位,URG、ACK、PSH、RST、SYN和FIN。

  SYN表示建立连接,FIN表示关闭连接;ACK表示响应;PSH表示有 DATA数据传输;RST表示连接重置;URG表示紧急指针字段有效。

  SYN、FIN、ACK位:其中ACK是可能与SYN,FIN等同时使用的,比如SYN和ACK可能同时为1,它表示的就是建立连接之后的响应。如果只是单个的一个SYN,它表示的只是建立连接。TCP的几次握手就是通过这样的ACK表现出来的。但SYN与FIN是不会同时为1的,因为前者表示的是建立连接,而后者表示的是断开连接。

  RST位:RST一般是在FIN之后才会出现为1的情况,表示的是连接重置。一般地,当出现FIN包或RST包时,我们便认为客户端与服务器端断开了连接;而当出现SYN和SYN+ACK包时,我们认为客户端与服务器建立了一个连接。

  PSH位(Push):PSH为1的情况,一般只出现在 DATA内容不为0的包中,也就是说PSH为1表示的是有真正的TCP数据包内容被传递。TCP的连接建立和连接关闭,都是通过请求-响应的模式完成的。当两个应用进程进行交互式的通信中,有时在一端的应用程序希望在键入一个命令后立即收到对应的响应。在这种情况下,TCP就可以使用推送操作。通常的数据中都会带有PSH,但URG只在紧急数据才设置,也称“带外数据”。

  URG位(URGent):当URG=1时,表示紧急指针字段有效。他告诉系统次报文段有紧急指针,应该尽快的处理(相当于高优先级的数据),而不要按照原来的排序序列来传送。若不使用紧急指针,那么这两个字符将存储在接收TCP的缓存末尾。只有在所有数据段被处理完毕后这两个字符才能被交付到接收方的网应用进程。URG是一个正偏移,与TCP首部中序号字段的值相加表示紧急数据后面的字节,即紧急指针是指向紧急数据最后一个字节的下一字节。

  1)、应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,然后TCP把数据流分区成适当长度的报文段(通常受该计算机连接的网络的数据链路层的最大传输单元(MTU)的限制)。

  2)、TCP把结果包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。

  3)、接收端实体对已成功收到的包发回一个相应的确认(ACK)。如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。TCP用一个校验和函数来检验数据是否有错误,在发送和接收时都要计算校验和。

  TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

  三次握手完后的数据传输也是基于请求应答模式的,从而很好的解决了丢包问题。

  1)TCP的三次握手最主要是防止已过期的连接再次传到被连接的主机。如果采用两次的话,会出现下面这种情况。

  比如是A机要连到B机,结果发送的连接信息由于某种原因没有到达B机;于是,A机又发了一次,结果这次B收到了,于是就发信息回来,两机就连接。传完东西后,断开。结果这时候,原先没有到达的连接信息突然又传到了B机,于是B机发信息给A,然后B机就以为和A连上了,这个时候B机就在等待A传东西过去。

  考虑计算机A和B之间的通信,假定B给A发送一个连接请求分组,A收到了这个分组,并发送了确认应答分组。按照两次握手的协定,A认为连接已经成功地建立了,可以开始发送数据分组。可是,B在A的应答分组在传输中被丢失的情况下,将不知道A是否已准备好,不知道A建议什么样的序列号,B甚至怀疑A是否收到自己的连接请求分组。在这种情况下,B认为连接还未建立成功,将忽略A发来的任何数据分组,只等待连接确认应答分组。而A在发出的分组超时后,重复发送同样的分组,资源会大大浪费。这样就形成了死锁。

  四次挥手:连接释放,确保数据能够完成传输。在创建连接时,发送端和接收端分别建立连接并以相应的数据结构进行建立维护,在一定程度上两端处于一个对等的关系。当一放释放连接时,并不能保证对端数据是否发送完毕,所以需要进行释放连接的请求,等待对端确认,所以一来一回,共四次。TCP协议是面向字节流的,是一种流式服务,全双工的。本端发送和接受数据两不误。

  挥手需要双发都同意才能结束。即关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

  一、TCP/IP参考模型ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。如图2-1所示,是TCP/IP参考模型和OS...博文来自:Doraemon___的博客

  IP分组格式协议版本:0100表示IPv4,0110表示IPv6报头长度:IP头部有多长(字节),4bits(0101~1111)服务类型:8bits,目前基本没怎么使用,表示该分组重要程度,优先级数...博文来自:加载中...

  参考书籍为《图解tcp/ip》-第五版。这篇随笔,主要内容还是TCP/IP所必备的基础知识,包括计算机与网络发展的历史及标准化过程(简述)、OSI参考模型、网络概念的本质、网络构建的设备等  下面是协...博文来自:Java_feng的博客

  TCP首部格式:TCP首部中没有表示包长度和数据长度的字段。可由IP层计算出TCP包长。即IP首部的数据包长度-IP首部长度由TCP包长可知数据的长度。1.源端口号:表示发送端端口号,字段长度16位2...博文来自:forcht

  TCP/IP协议由于一直以来我听到太多的人问过我关于网络协议的问题,我自己在刚开始使用网络协议的时候也出现过,无法理解的情况,所有我想以个人的观点和理解来讲述下对于TC...博文来自:匠芯筑梦

  本篇结构:前言IP路由选择补充几个概念总结一、前言接着上一篇,这篇继续网际协议IP的内容,在了解了IP协议的基础上,继续学习IP路由选择。先看张图,主机甲与主机乙分别在两个不同的网段上,中间通过路由器...博文来自:w1992wishes的博客

  1.如果按主机号来制作路由表,那么如果一个网络有1W个主机就要在路由表添加1W条。那么如果多个路由。那就更多。但是以网络号制作路由表那么就需要添加一行就好了。2.在路由最主要的是一下两个信息:目的网络...博文来自:山炮网络的博客

  6.1交付交付(delivery)是指在网络层的控制下,底层各网络对分组的处理方式。需要使用两种不同的交付方法:直接交付,间接交付。转发(forwarding)指的是把分组交付到下一站的方式。6.1....博文来自:bohu83的博客

  理解TCP/IP各个协议以及协议之间的关系博文来自:Be The Best!

  在网络分析领域,偏移量是一个频繁出现的术语,如IP分段偏移量、TCP偏移量、位偏移,基于数据包偏移、基于协议偏移等等。那它们到底是什么含义,有什么区别呢?带着这些疑问,我查阅了一些TCP/IP书籍,...博文来自:cumirror的专栏

  OSI的7层协议体系和TCP/IP4层协议体系如下图所示,OSI模型完整但是复杂不太实用,如今应用最多的是TCP/IP4层协议体系:网络接口层,网络层(IP),传输层(TCP、UDP),应用层。各层包...博文来自:sweetgum2012的专栏

  IP数据报的首部注:IP数据报的格式,能够说明IP协议都具有什么功能。1.IP数据报首部——固定部分1.1版本占4位,指IP协议的版本。通信双方使用的IP协议的版本必须一致。IP协议版本号为4(即IP...博文来自:Catherine的笔记

  学完了计算机网络是时候整理一篇总结了,温故知新。注意:这篇博客很长长长(2.5万字+50图)。 TCP/IP网络知识点总结 一.总述 1.定义:计算机网络是一些互相连接的、自治的计算机的集合。因特网是...博文来自:随风的博客

  通过网络发送数据,大致可以分为面向有连接与面向无连接两种类型。博文来自:好久不见

  前言在写之前,先给这篇文章做一个明确定位,读完这篇文章后,希望你能够:对于计算机网络有初步的认识和了解,了解一些经典专业术语,如三次握手、四次挥手、DNS解析的含义。了解一些应用层协议,如传统的HTT...博文来自:jilongliang

  1.TCP建立连接(3次)和连接释放(4次)的图(1)建立TCP连接(三次握手)(2)释放TCP连接(四次握手) 2.TCP和UDP的特点2.1TCP的特点(1)面向连接的运输层协议(2)每条TCP连...博文来自:zijikanwa

  TCP/IP背景和介绍上世纪70年代,随着计算机技术的发展,计算机使用者意识到:要想发挥计算机更大的作用,就要将世界各地的计算机连接起来。但是简单的连接是远远不够的,因为计算机之间无法沟通。因此设计一...博文来自:Jingle的专栏

  一、网络通信网络是通过物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的,通过信息交换实现人与人、人与计算机、计算机与计算机之间的通信。1.网络通信要遵守网络协议,...博文来自:我的博客

  IP地址的编址方法经过了三个阶段:分类的IP地址、子网的划分、构成超网。分类的IP地址的缺点:    1)IP地址空间的利用率有时很低。    每一个A类地址网络可连接的主机数超过1000万台,每一个...博文来自:Canterer-子帅的博客

  一、什么是tcp/iptcp/ip协议是一个协议集合,按照层次分为链路层、网络层、传输层、应用层四个层次。(与tcp/ip协议并列的还有OSI网络框架模型---开放式系统互连参考模型,分为物理层、数据...博文来自:XCXCXCXCX

  TCP特点:TCP通过检验和,序列号,确认应答,重发控制,连接管理以及窗口控制等机制实现可靠性传输。通过序列号与确认应答提高可靠性:TCP通过肯定的确认应答ACK实现可靠的数据传输。当发生端将数据发送...博文来自:forcht

  1、概述众所周知,TCP/IP是面向链接的可靠传输协议,但是问题是如何实现可靠传输的呢?在我看来,TCP/IP可靠传输的基础是滑动窗口协议和连续ARQ协议,配合着流量控制和拥塞控制,使得整个传输过程保...博文来自:客人

  IPv4首部一般是20字节长。在以太网帧中,IPv4包首部紧跟着以太网帧首部,同时以太网帧首部中的协议类型值设置为080016。IPv4提供不同,大部分是很少用的选项,使得IPv4包首部最长可扩展...博文来自:独自登高楼 望断天涯路

  IP层转发分组的流程1.根据目的网络地址来确定下一跳路由器,这样做的结果如下:1.1IP数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。1.2只有到达最后一个路由器时...博文来自:Catherine的笔记

  osi大家应该都知道osi七层模型吧,物理层链路层网络层传输层会话层表示层应用层ip属于网络层,tcp属于传输层,你可以把每一层想像成粽子的粽叶,包裹了七层的粽子最外面的就是物理层,最里面的就是应用层...博文来自:看写写

  一、IP数据包的报文格式   首先我们需要了解数据报的格式:1-1.版本4位,表示版本号,目前最广泛的是4=B1000,即常说的IPv4;相信IPv6以后会广泛应用,它能给世界上每个纽扣都分配    ...博文来自:LeetCode8023的博客

  整理性文档,非原创,主摘自谢希仁先生的《计算机网络》,并参考了一些网络资料,在此不一一列举。内容主要包括以下几个方面:1.IP地址,分类的IP地址、子网掩码以及子网划分的概念。2.网关的概念。3.几种...博文来自:紫伊山人的专栏

  1      高性能网络编程1—accept建立连接编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的...博文来自:lotus302的专栏

  (1)分组在网络层的交付以及直接交付和间接交付的区别(2)分组在网络层的转发以及基于目的地址和基于标记的转发之间的区别(3)不同的转发技巧:1下一跳法2特定网络法3特定主机法4默认方法(4)分类编址和...博文来自:u011409389的专栏

  协议是一个比较复杂的协议集,有很多专业书籍介绍。在此...博文来自:baijingjing425的专栏

  目标:实现一个聊天室,每一个客户端发送的消息都能在各个客户端显示出来思路:设有服务器类和客户端类,服务器主要用于消息的多线程转发,服务器启动后,等待连接,若有客户端连上,则将其Socket对象置于一个...博文来自:的博客

  TCP/IP的传输层相关封包与数据网络层的IP封包只负责将数据送到正确的目标主机去,但这个封包到底会不会被接受,或者是有没有被正确的接收, 那就不是IP的任务啦!那是传送层的任务之一。2.4.1可靠联...博文来自:congyh的专栏

  利用wireshark抓包,分析:(1)TCP/IP协议的报文封装方式;(2)主要的TCP/IP协议及其层次结构;(3)以典型网络应用(PPPoE,HTTP,FTP,SMTP/POP3等)的工作原理及...博文来自:unclestars的博客

  引言分片是分组交换的思想体现,也是IP协议解决的两个主要问题之一。在IP协议中的分片算法主要解决不同物理网络最大传输单元(MTU)的不同造成的传输问题。但是分组在传输过程中不断地分片和重组会带来很...博文来自:snowsnowsnow1991的博客

  答:1.应用层2.传输层3.网络层4.网络接口层*应用层-------。ICP/IP协议族在这一层面有着很多协议来支持不同的应用,许多大家所熟悉的基于Internet的应用的实现就离不开这些协议。...博文来自:winson的专栏

  IP协议提供不可靠无连接的数据报传输服务,IP层提供的服务是通过IP层对数据报的封装与拆封来实现的。IP数据报的格式分为报头区和数据区两大部分,其中报头区是为了正确传输高层数据而加的各种控制信息,数据...博文来自:believe的专栏

  1.小的知识点1.1.计算机网络1.2.协议2.协议分层与OSI参考模型2.1协议的分层2.2OSI参考模型2.3七层通信3.传输方式的分类3.1有向连接和无向连接3.2电路交换和分组交换3.3根据接...博文来自:学海一乌鸦的博客

  既然已经从事了IT这个行业,就势必要去了解下网络底层,虽然实际工作中这些东西用不到。高楼大厦,起于平川。不积跬步,无以至千里,不积小流,无以成江海。我现在的知识结构,就如同空中楼阁。稍微遇到高层次的问...博文来自:李阳阳的博客

  根据以上所述,可归纳出分组转发算法如下:(1)从数据报的首部提取目的主机的IP地址D,得出目的网络地址为N.(2)若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,进...博文来自:yujianrong的专栏

  UDP整体的封装格式如下:下面是8字节UDP首部:当IP层根据协议字段把UDP报文向上传送到UDP模块后,UDP模块再根据端口号将数据发送到相应的进程中,以此实现进程到进程间的通信。16位UDP长度代...博文来自:Nestle的专栏

  TCP组包问题及处理方法问题的表述原因的剖析发送端处理方法接收端处理方法总结问题的表述问题的背景是这样的:有一个系统,那有后台服务器,也有移动端的客户端。当客户端上线时,服务器会将指定的数据库的数据发...博文来自:Snipergzf的博客

  MTU和MSS的概念MTU最大传输单元(MaximumTransmissionUnit,MTU)是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位)。例如:以太网MTU值为1500字节...博文来自:renwotao2009的专栏

  简单分析一下tcp连接过程中分组丢失情况下,服务端与客户端的反应,如有不足或错误之处,希望各位道友指导!...博文来自:Mr.shi的博客

  物理层(RS-232、V.35)和 数据链路层(HDLC、X.25)涉及到在通信信道上传输的原始比特流,它实现传输数据所需要的机械、电气、功能性及过程等手段,提供检错、纠错、同步等措施,使之对网络层显...博文来自:cws1214的专栏

  帐号相关流程注册范围 企业 政府 媒体 其他组织换句话讲就是不让个人开发者注册。 :)填写企业信息不能使用和之前的公众号账户相同的邮箱,也就是说小程序是和微信公众号一个层级的。填写公司机构信息,对公账...博文来自:小雨同学的技术博客

  1.为什么是Fiddler? 抓包工具有很多,小到最常用的web调试工具firebug,达到通用的强大的抓包工具wireshark.为什么使用fiddler?原因如下: a.Firebug虽然可以抓包...博文来自:专注、专心

  Android 高清加载巨图方案 拒绝压缩图片 转载请标明出处: ; ...博文来自:Hongyang

  最近正好又用到 DM368 开发板,就将之前做的编解码的项目总结一下。话说一年多没碰,之前做的笔记全忘记是个什么鬼了。还好整理了一下出图像了。不过再看看做的这个东西,真是够渣的,只能作为参考了。项目效...博文来自:不积跬步,无以至千里

  在网上所搜索很多操作Word的都是用VC,VS2010做了一些修改,添加操作的方式和用法都有所变化。 要操作Word必须先添加对应的类,如下图在工程中添加操作类(TypeLib中的 MFC类): ...博文来自:xiangjianbo127的专栏

  PopWindow 对Android的底部弹窗、顶部弹窗菜单及自定义界面的使用封装。 GitHub:一、介绍 主要是用于在...博文来自:HMYANG314的专栏

  【接上篇】         上述计算星期的方法虽然步骤简单,但是每次都要计算两个日期的时间差,不是非常方便。如果能够有一个公式可以直接根据日期计算出对应的星期岂不是更好?幸运的是,这样的公式是存在的。...博文来自:oRbIt 的专栏

  最近比较有空,大四出来实习几个月了,作为实习狗的我,被叫去研究Docker了,汗汗! Docker的三大核心概念:镜像、容器、仓库 镜像:类似虚拟机的镜像、用俗话说就是安装文件。 容器:类似一个轻量...博文来自:我走小路的博客

  Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的Thread...博文来自:u011860731的专栏

  一、组合模式适用场景把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式对部分对象和整体对象进行管理。二、组合模式结构 抽象构件(Conponent)角色:所有类的共有接口,定义了叶子和...博文来自:小小本科生成长之路

  jquery/js实现一个网页同时调用多个倒计时(最新的) 最近需要网页添加多个倒计时. 查阅网络,基本上都是千遍一律的不好用. 自己按需写了个.希望对大家有用. 有用请赞一个哦! //js ...博文来自:Websites

  此处仅以VS2010为例,详细说明一下如何在VS环境下生成和使用C++的静态库与动态库。Qt下生成和使用静态和动态库后续再讲。 本文仅供初学者参考,如果有问题欢迎大家指正。        首先简单地理...博文来自:luyan的博客

  对象的创建和销毁在一定程度上会消耗系统的资源,虽然jvm的性能在近几年已经得到了很大的提高,对于多数对象来说,没有必要利用对象池技术来进行对象的创建和管理。但是对于有些对象来说,其创建的代价还是比较昂...博文来自:赶路人儿

  command窗口是命令窗口,即为sqplus窗口,有命令提示符,识别sqlplus命令,基本的命令都可以执行 sql仅可执行DDL、select、DML等...博文来自:Ape55的博客

  SQL Server查询和检索操作。 一道例题学会查询和检索操作: 1、在SQL SERVER 2008上附加teaching数据库,其中三张表的含义解释如下: 学生表dbo...博文来自:J.Anson的博客

  转载请标明出处: ; 本文出自:【张鸿洋的博客】 一 概述 上周一...博文来自:Hongyang

  HOF(Histogramsof Oriented Optical Flow)与HOG类似,是对光流方向进行加权统计,得到光流方向信息直方图。通常用于动作识别中。 不懂HOG特征的,这篇文章讲得很清...博文来自:LX

  强连通分量: 简言之 就是找环(每条边只走一次,两两可达) 孤立的一个点也是一个连通分量   使用tarjan算法 在嵌套的多个环中优先得到最大环( 最小环就是每个孤立点)   定义: int Ti...博文来自:九野的博客

  花了几天,终于把matlab版的人脸检测运行成功了,虽然正确率不是很高,看着各种论文上的人脸检测正确率都出奇的高,我是不怎么相信的,有的论文连基于平均脸的人脸检测正确率都能达到98%,汗啊~~  也许...博文来自:海海人生

  原文地址:反置页表作者:hilg 在分页系统中为每个进程配置一张页表,进程逻辑地址空间中的每一页,在页表中都对应有一个页表项。在现代计算机系统中通常允许一个进程的逻辑地址空间非常大,因此就有很多页表...博文来自:月光轩辕的专栏

  在MATLAB中,可以注释一段程序。 使用“%{”和“%}”。 例如 %{ 。。。 %} 即可。 经典方法是用 if 0,但缺点是不够直观,注释掉的内容仍然保持代码的颜色。现在可以用 ...博文来自:知识小屋

本文链接:http://pebeducation.com/fanxiangyanma/304.html