通信协议的实现(can通信协议)

      最后更新:2023-07-30 06:51

      分布式架构之网络通信协议

      @[TOC]3.1.网络协议概念模型3.1.1.OSI 七层网络模型和TCP/IP 四层概念模型3.1.2.请求发起过程,在 tcp/ip 四层网络模型中所做的事情3.1.2.1.客户端如何找到目标服务3.1.3.接收端收到数据包以后的处理过程3.1.3.1.为什么有了 MAC 层还要走 IP 层呢?3.1.4.分层负载3.1.4.1.二层负载3.1.4.2.三层负载3.1.4.3.四层负载3.1.4.4.七层负载4.1.TCP/IP和UDP/IP简介4.2.TCP三次握手协议4.2.1.为啥还要进行第三次握手4.2.2.SYN 攻击4.3.TCP 四次挥手协议通俗易懂的话描述4.3.1.问题4.3.1.1.【问题 1】为什么连接的时候是三次握手,关闭的时候却是四次握手?4.3.1.2.【问题 2】为什么 TIME_WAIT 状态需要经过 2MSL(最大报文段生存时间)才能返回到 CLOSE状态?5.1.概念5.2.socket5.3.基于 TCP 协议实现通信5.3.1 样例1:客户端发起请求,服务端接收ServerSocketDemo.javaClientSocketDemo输出5.3.2 样例2:基于TCP实现双向对话通信功能上面的两个类,只是实现了单向的通信[即客户端到服务端的通信]我们在上面两个类的基础上进行改造;5.3.3 Socket通信模型5.3.4 TCP协议通信原理5.3.5.TCP 的滑动窗口协议5.3.5.1.发送窗口5.3.5.2.接收窗口5.3.5.3.滑动窗口演示参考https://media.pearsoncmg.com/aw/ecs_kurose_compnetwork_7/cw/content/interactiveanimations/selective-repeat-protocol/index.html6.1.阻塞是什么鬼?6.2.多线程解决阻塞问题6.2.1.多线程解决阻塞问题:方式1 一个客户端一个线程6.2.1.多线程解决阻塞问题:方式2 线程池6.3.阻塞IO模型6.4.非阻塞模型
      分布式架构之网络通信协议

      TCP/IP协议体系结构是有什么实现的?

      协议的本身就是一个程序的一种,所以无需要其它程序帮助来实现TCP/IP的内部结构,为讨论与互联网有关的安全问题打下基础。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。 TCP/IP整体构架概述TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。传输层:在此层中,它提供了节点间的数据传送,应用程序之间的通信服务,主要功能是数据格式化、数据确认和丢失重传等。如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。网络接口层(主机-网络层):接收IP数据报并进行传输,从网络上接收物理帧,抽取IP数据报转交给下一层,对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。TCP/IP中的协议以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:1. IP网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好像是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。2. TCP如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。3.UDPUDP与TCP位于同一层,但它不管数据包的顺序、错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网络时间协议)和DNS(DNS也使用TCP)。欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。4.ICMPICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的服务。5. TCP和UDP的端口结构TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:源IP地址 发送包的IP地址。目的IP地址 接收包的IP地址。源端口 源系统上的连接的端口。目的端口 目的系统上的连接的端口。端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。TCP/IP协议的主要特点:(1)开放的协议标准,可以免费使用,并且独立于特定的计算机硬件与操作系统;(2)独立于特定的网络硬件,可以运行在局域网、广域网,更适用于互联网中;(3)统一的网络地址分配方案,使得整个TCP/IP设备在网中都具有惟一的地址;(4)标准化的高层协议,可以提供多种可靠的用户服务。TCP/IP是一组协议的代名词,它还包括许多协议,组成了TCP/IP协议簇。TCP/IP协议簇分为四层,IP位于协议簇的第二层(对应OSI的第三层),TCP位于协议簇的第三层(对应OSI的第四层)。TCP和IP是TCP/IP协议簇的中间两层,是整个协议簇的核心,起到了承上启下的作用。1、接口层TCP/IP的最低层是接口层,常见的接口层协议有:Ethernet 802.3、Token Ring 802.5、X.25、Frame reley、HDLC、PPP等。2、网络层网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议。IP是网络层的核心,通过路由选择将下一跳IP封装后交给接口层。IP数据报是无连接服务。ICMP是网络层的补充,可以回送报文。用来检测网络是否通畅。Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。ARP是正向地址解析协议,通过已知的IP,寻找对应主机的MAC地址。RARP是反向地址解析协议,通过MAC地址确定IP地址。比如无盘工作站和DHCP服务。3、传输层传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram rotocol)。TCP是面向连接的通信协议,通过三次握手建立连接,通讯时完成时要拆除连接,由于TCP是面向连接的所以只能用于点对点的通讯。TCP提供的是一种可靠的数据流服务,采用“带重传的肯定确认”技术来实现传输的可靠性。TCP还采用一种称为“滑动窗口”的方式进行流量控制,所谓窗口实际表示接收能力,用以限制发送方的发送速度。UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP通讯时不需要接收方确认,属于不可靠的传输,可能会出丢包现象,实际应用中要求在程序员编程验证。4、应用层应用层一般是面向用户的服务。如FTP、TELNET、DNS、SMTP、POP3。FTP(File Transmision Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换。SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转。POP3(Post Office Protocol 3)是邮局协议第3版本,用于接收邮件。数据格式:数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)IP数据包:IP头部+TCP数据信息 (IP头包括源和目标主机IP地址、类型、生存期等)TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)   OSI中的层功能TCP/IP协议族应用层文件传输,电子邮件,文件服务,虚拟终端TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet表示层数据格式化,代码转换,数据加密没有协议会话层解除或建立与别的接点的联系没有协议传输层提供端对端的接口TCP,UDP网络层为数据包选择路由IP,ICMP,RIP,OSPF,BGP,IGMP数据链路层传输有地址的帧以及错误检测功能SLIP,CSLIP,PPP,ARP,RARP,MTU物理层以二进制数据形式在物理媒体上传输数据ISO2110,IEEE802。IEEE802.2
      TCP是面向连接的,所谓面向连接,就是当计算机双方通信时必需先建立连接,然后数据传送,最后拆除连接三个过程建立连接,就是三次握手,数据包结构不用讲了吧数据传送,基于IP的路由……实例多了去了,基本上使用的IE什么的都是这样的应用嘛
      TCP/IP协议体系结构是有什么实现的?

      新人向-从零开始设计一个安全的通信协议

      网络上有大量关于 HTTPS 的技术文章,但是大部分文章都在以“英译汉”的方式,把 TLS 的握手流程讲出来。 本文将尝试从“如何实现”的角度,通过从零开始设计一个安全的通信协议的方式,帮助读者加快对信息安全的理解。HTTP 面临的三个安全问题分别是:eavesdropping(窃听),tampering(篡改),message forgery(信息伪造)。浏览器和服务器进行信息传递时,会通过第三方转发信息。此时,信息安全面临三个问题:为了防止第三方伪造信息,我们很容易的想到通过 签名 的方式。讲解签名之前,我们需要先对非对称加密方式以及消息摘要:(Digital Digest)有所了解。对称加密是通过同一份密钥加密和解密数据,而非对称加密则有两份密钥,分别是公钥和私钥,用公钥加密的数据,要用私钥才能解密,用私钥加密的数据,要用公钥才能解密。常用的非对称加密方式有:RSA、ECC。具体的原理,这里不进行展开。我们只需要了解用于签名的非对称加密需要满足的两个特性即可:非对称加密通常对等待加密的信息长度有要求,所以,我们一般只对消息摘要加密。消息摘要:(Digital Digest)又称为指纹(Finger Print)。可以通过单向哈希(one-way hash)函数,为不定长度的信息生成一个固定长度的摘要。有了以上知识,我们来看一下数字签名是如何进行的?签名:通对某一份数据进行单向哈希,缩短等待加密信息的长度=》单项哈希通过私钥对信息摘要进行加密运算并生成签名,表示我认可了这份数据(只有我拥有私钥,第三方难以伪造)=》签名验签:通过公钥解析签名对数据进行单向哈希判等我们可以模拟一下会话的握手阶段的通信流程:浏览器:hello服务器:服务器公钥 + encrypt(服务器公钥,服务器私钥)浏览器:encrypt(hash(信息),服务器公钥) + 信息服务器:encrypt(hash(信息),服务器私钥) + 信息上面的通信方式是不是安全多了?且慢,如果服务器返回公钥时,被第三方拦截,然后替换为第三方的公钥,我们该如何怎么办?考虑到把所有网站的公钥提前存储到浏览器中并不现实(数量巨大,并且新增公钥、撤销公钥都极为不便)。我们可以提前浏览器内置一份或多份公钥(根证书),然后再把流程升级一下:会话的握手阶段的通信流程:浏览器:hello服务器:服务器公钥 + encrypt(服务器公钥,第三方私钥)浏览器:encrypt(hash(信息),服务器公钥) + 信息服务器:encrypt(hash(信息),服务器私钥) + 信息但是,签名在解决信息伪造和篡改的同时又引入了另外一个问题:性能消耗。虽然只需要对摘要信息进行签名,但是,它依然给服务器带来了非常巨大的运算压力。一般情况下,签名操作会导致服务器的处理速度变为原来的万分之一甚至更低(根据算法的不同,实际情况可能会有数量级的变化)。并且,它还面临一个非常巨大安全问题:窃听。第三方仍然可以看到通信内容。既然非对称加密对性能影响巨大,剩下的唯一方案是对称加密。因为服务器需要和数量众多的浏览器进行通信,所以,每条通信用到的对称加密密钥都应该是不同的。否则,浏览器和服务器之间的通信依然会被第三方解密。引入对称加密后,就可以再次升级通信流程:会话的握手阶段的通信流程:浏览器:hello服务器:服务器公钥 + encrypt(服务器公钥,第三方私钥) + 第一个随机数浏览器:encrypt(第二个随机数,服务器公钥)双方根据PRF算法生成一个对称加密的密钥并用于之后的通信:浏览器:encrypt(hash(信息),对称密钥) +encrypt(信息,对称密钥)服务器:encrypt(hash(信息),对称密钥) +encrypt(信息,对称密钥)这种双方各自生成一个随机数的方式可以应对浏览器或者服务器单方面出现漏洞(随机数不随机)的情况。与此同时,在一次会话的建立中,服务器只需要解析一次就可以完成整个会话。 安全故事:1996年,研究人员就发现了网景浏览器1.1的伪随机数发生器仅仅利用了三个参数:当天的时间,进程ID和父进程ID。在1996年,利用当时的机器仅需要25秒钟的时间就可以破解一个SSL通信
      新人向-从零开始设计一个安全的通信协议

      简述ip协议如何实现任意两台计算机之间通信

      网络上每台计算机(主机)至少具有一个IP地址将其与网络上其他计算机区别开。当发送或者接受信息时(例如,一个电子邮件信息或一个网页),信息被分成几个小块,称为信息包。每个信息包都包含了发送者和接受者的网络地址。网关计算机读到了目的地址,信息包继续向前到下一个邻近的网关照例读到目的地址,如此一直向前通过网络,直到一个网关确认这个信息包属于其最紧邻或者其范围内的计算机。最终直接进入到其指定地址的计算机。扩展资料IP协议主要用于互联异构型网络,例如将LAN与WAN(使用X.25技术)互联。尽管这两类网络中采用的低层网络协议不同,但通过网关中的IP可使LAN中的LLC帧和WAN中的X.25分组之间互相交换。各种网络的帧格式、地址格式等差别很大,TCP/IP通过IP数据报和IP地址将它们统一起来,向上层(主要是传输层)提供统一的IP数据报,使低层物理帧的差异对上层协议不复存在,达到屏蔽低层、提供一致性的目的。虽然IP协议保证了计算机之间可以发送和接收数据报,但它不负责解决数据报传达的可靠性等安全问题,这些安全因素主要由TCP协议负责完成。参考资料来源:百度百科-IP协议参考资料来源:百度百科-因特网协议
      由上网计算机在登录网络时,把自身的IP地址及标识符发送到寻址服务器上,由寻址服务器读取并存储带有标识符的IP地址,并为其他访问寻址服务器的计算机提供带有标识符的IP地址,完成两个电脑设备之间的传输,下面是扩展介绍。 一、先看下什么是TCP/IP协议 :TCP/IP是Transmission Control Protocol/Internet Protocol的简写,中文译名为传输控制协议/互联网络协议)协议是Internet最基本的协议,简单地说,就是由底层的IP协议和TCP协议组成的。 在Internet没有形成之前,各个地方已经建立了很多小型的网络,称为局域网。Internet的中文意义是"网际网",它实际上就是将全球各地的局域网连接起来而形成的一个"网之间的网(即网际网)"。然而,在连接之前的各式各样的局域网却存在不同的网络结构和数据传输规则,将这些小网连接起来后各网之间要通过什么样的规则来传输数据呢?这就象世界上有很多个国家,各个国家的人说各自的语言,世界上任意两个人要怎样才能互相沟通呢?如果全世界的人都能够说同一种语言(即世界语),这个问题不就解决了吗?TCP/IP协议正是Internet上的"世界语"。二、TCP/IP 通信协议1--网际协议IP1、Internet 上使用的一个关键的低层协议是网际协议,通常称IP协议。利用一个共同遵守的通信协议,从而使 Internet 成为一个允许连接不同类型的计算机和不同操作系统的网络。要使两台计算机彼此之间进行通信,必须使两台计算机使用同一种"语言"。通信协议正像两台计算机交换信息所使用的共同语言,它规定了通信双方在通信中所应共同遵守的约定。 计算机的通信协议精确地定义了计算机在彼此通信过程的所有细节。例如,每台计算机发送的信息格式和含义,在什么情况下应发送规定的特殊信息,以及接收方的计算机应做出哪些应答等等。 网际协议IP协议提供了能适应各种各样网络硬件的灵活性,对底层网络硬件几乎没有任何要求,任何一个网络只要可以从一个地点向另一个地点传送二进制数据,就可以使用IP协议加入 Internet 了。2、如果希望能在 Internet 上进行交流和通信,则每台连上 Internet 的计算机都必须遵守IP协议。为此使用 Internet 的每台计算机都必须运行IP软件,以便时刻准备发送或接收信息。3、IP协议对于网络通信有着重要的意义:网络中的计算机通过安装IP软件,使许许多多的局域网络构成了一个庞大而又严密的通信系统。从而使 Internet 看起来好像是真实存在的,但实际上它是一种并不存在的虚拟网络,只不过是利用IP协议把全世界上所有愿意接入 Internet 的计算机局域网络连接起来,使得它们彼此之间都能够通信。三、TCP/IP通信协议2--传输控制协议TCP1、尽管计算机通过安装IP软件,从而保证了计算机之间可以发送和接收数据,但IP协议还不能解决数据分组在传输过程中可能出现的问题。因此,若要解决可能出现的问题,连上 Internet 的计算机还需要安装TCP协议来提供可靠的并且无差错的通信服务。2、TCP协议被称作一种端对端协议。这是因为它为两台计算机之间的连接起了重要作用:当一台计算机需要与另一台远程计算机连接时,TCP协议会让它们建立一个连接、发送和接收数据以及终止连接。 传输控制协议TCP协议利用重发技术和拥塞控制机制,向应用程序提供可靠的通信连接,使它能够自动适应网上的各种变化。即使在 Internet 暂时出现堵塞的情况下,TCP也能够保证通信的可靠。3、众所周知, Internet 是一个庞大的国际性网络,网路上的拥挤和空闲时间总是交替不定的,加上传送的距离也远近不同,所以传输数据所用时间也会变化不定。TCP协议具有自动调整"超时值"的功能,能很好地适应 Internet 上各种各样的变化,确保传输数值的正确。 因此,从上面可以了解到:IP协议只保证计算机能发送和接收分组数据,而TCP协议则可提供一个可靠的、可流控的、全双工的信息流传输服务。4、综上所述,虽然IP和TCP这两个协议的功能不尽相同,也可以分开单独使用,但它们是在同一时期作为一个协议来设计的,并且在功能上也是互补的。只有两者的结合,才能保证 Internet 在复杂的环境下正常运行。凡是要连接到 Internet 的计算机,都必须同时安装和使用这两个协议,因此在实际中常把这两个协议统称作TCP/IP协议。四、从上面知识可以知道,连接到Internet上的每台计算机,不论其IP地址属于哪类都与网络中的其他计算机处于平等地位,因为只有IP地址才是区别计算机的唯一标识。所以,以上IP地址的分类只适用于网络分类。 五、在Internet中,一台计算机可以有一个或多个IP地址,就像一个人可以有多个通信地址一样,但两台或多台计算机却不能共用一个IP地址。如果有两台计算机的IP地址相同,则会引起异常现象,无论哪台计算机都将无法正常工作。
      Internet 上使用的一个关键的低层协议是网际协议,通常称IP协议。我们利用一个共同遵守的通信协议,从而使 Internet 成为一个允许连接不同类型的计算机和不同操作系统的网络。要使两台计算机彼此之间进行通信,必须使两台计算机使用同一种"语言"。通信协议正像两台计算机交换信息所使用的共同语言,它规定了通信双方在通信中所应共同遵守的约定。 计算机的通信协议精确地定义了计算机在彼此通信过程的所有细节。网际协议IP协议提供了能适应各种各样网络硬件的灵活性,对底层网络硬件几乎没有任何要求,任何一个网络只要可以从一个地点向另一个地点传送二进制数据,就可以使用IP协议加入 Internet 了。
      这是网络问题
      简述ip协议如何实现任意两台计算机之间通信

      TCP/IP协议是怎么实现的?

      TCP/IP(Transmission Control Protocol/Internet Protocol的简写,中文译名为传输控制协议/互联网络协议)协议是Internet最基本的协议,简单地说,就是由底层的IP协议和TCP协议组成的。 在Internet没有形成之前,各个地方已经建立了很多小型的网络,称为局域网,Internet的中文意义是"网际网",它实际上就是将全球各地的局域网连接起来而形成的一个"网之间的网(即网际网)"。然而,在连接之前的各式各样的局域网却存在不同的网络结构和数据传输规则,将这些小网连接起来后各网之间要通过什么样的规则来传输数据呢?这就象世界上有很多个国家,各个国家的人说各自的语言,世界上任意两个人要怎样才能互相沟通呢?如果全世界的人都能够说同一种语言(即世界语),这个问题不就解决了吗?TCP/IP协议正是Internet上的"世界语"。TCP/IP协议的开发工作始于70年代,是用于互联网的第一套协议。这里简要介绍一下TCP/IP的内部结构,为讨论与互联网有关的安全问题打点基础。TCP/IP协议组之所以流行,部分原因是因为它可以用在各种各样的信道和底层协议(例如T1和X.25、以太网以及RS-232串行接口)之上。确切地说,TCP/IP协议是一组包括TCP协议和IP协议,UDP(User Datagram Protocol)协议、ICMP(Internet Control Message Protocol)协议和其他一些协议的协议组。1. TCP/IP整体构架概述TCP/IP协议并不完全符合OSI的七层参考模型。传统的开放式系统互连参考模型,是一种通信协议的7层抽象的参考模型,其中每一层执行某一特定任务。该模型的目的是使各种硬件在相同的层次上相互通信。这7层是:物理层、数据链路层、网路层、传输层、话路层、表示层和应用层。而TCP/IP通讯协议采用了4层的层级结构,每一层都呼叫它的下一层所提供的网络来完成自己的需求。这4层分别为:应用层:应用程序间沟通的层,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。传输层:在此层中,它提供了节点间的数据传送服务,如传输控制协议(TCP)、用户数据报协议(UDP)等,TCP和UDP给数据包加入传输数据并把它传输到下一层中,这一层负责传送数据,并且确定数据已被送达并接收。互连网络层:负责提供基本的数据封包传送功能,让每一块数据包都能够到达目的主机(但不检查是否被正确接收),如网际协议(IP)。网络接口层:对实际的网络媒体的管理,定义如何使用实际网络(如Ethernet、Serial Line等)来传送数据。2. TCP/IP中的协议以下简单介绍TCP/IP中的协议都具备什么样的功能,都是如何工作的:IP网际协议IP是TCP/IP的心脏,也是网络层中最重要的协议。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包,并把该数据包发送到更高层---TCP或UDP层;相反,IP层也把从TCP或UDP层接收来的数据包传送到更低层。IP数据包是不可靠的,因为IP并没有做任何事情来确认数据包是按顺序发送的或者没有被破坏。IP数据包中含有发送它的主机的地址(源地址)和接收它的主机的地址(目的地址)。高层的TCP和UDP服务在接收数据包时,通常假设包中的源地址是有效的。也可以这样说,IP地址形成了许多服务的认证基础,这些服务相信数据包是从一个有效的主机发送来的。IP确认包含一个选项,叫作IP source routing,可以用来指定一条源地址和目的地址之间的直接路径。对于一些TCP和UDP的服务来说,使用了该选项的IP包好象是从路径上的最后一个系统传递过来的,而不是来自于它的真实地点。这个选项是为了测试而存在的,说明了它可以被用来欺骗系统来进行平常是被禁止的连接。那么,许多依靠IP源地址做确认的服务将产生问题并且会被非法入侵。TCP如果IP数据包中有已经封好的TCP数据包,那么IP将把它们向‘上’传送到TCP层。TCP将包排序并进行错误检查,同时实现虚电路间的连接。TCP数据包中包括序号和确认,所以未按照顺序收到的包可以被排序,而损坏的包可以被重传。TCP将它的信息送到更高层的应用程序,例如Telnet的服务程序和客户程序。应用程序轮流将信息送回TCP层,TCP层便将它们向下传送到IP层,设备驱动程序和物理介质,最后到接收方。面向连接的服务(例如Telnet、FTP、rlogin、X Windows和SMTP)需要高度的可靠性,所以它们使用了TCP。DNS在某些情况下使用TCP(发送和接收域名数据库),但使用UDP传送有关单个主机的信息。UDPUDP与TCP位于同一层,但对于数据包的顺序错误或重发。因此,UDP不被应用于那些使用虚电路的面向连接的服务,UDP主要用于那些面向查询---应答的服务,例如NFS。相对于FTP或Telnet,这些服务需要交换的信息量较小。使用UDP的服务包括NTP(网落时间协议)和DNS(DNS也使用TCP)。欺骗UDP包比欺骗TCP包更容易,因为UDP没有建立初始化连接(也可以称为握手)(因为在两个系统间没有虚电路),也就是说,与UDP相关的服务面临着更大的危险。ICMPICMP与IP位于同一层,它被用来传送IP的的控制信息。它主要是用来提供有关通向目的地址的路径信息。ICMP的‘Redirect’信息通知主机通向其他系统的更准确的路径,而‘Unreachable’信息则指出路径有问题。另外,如果路径不可用了,ICMP可以使TCP连接‘体面地’终止。PING是最常用的基于ICMP的服务。TCP和UDP的端口结构TCP和UDP服务通常有一个客户/服务器的关系,例如,一个Telnet服务进程开始在系统上处于空闲状态,等待着连接。用户使用Telnet客户程序与服务进程建立一个连接。客户程序向服务进程写入信息,服务进程读出信息并发出响应,客户程序读出响应并向用户报告。因而,这个连接是双工的,可以用来进行读写。两个系统间的多重Telnet连接是如何相互确认并协调一致呢?TCP或UDP连接唯一地使用每个信息中的如下四项进行确认:源IP地址---发送包的IP地址。目的IP地址---接收包的IP地址。源端口---源系统上的连接的端口。目的端口---目的系统上的连接的端口。 注:端口是一个软件结构,被客户程序或服务进程用来发送和接收信息。一个端口对应一个16比特的数。服务进程通常使用一个固定的端口,例如,SMTP使用25、Xwindows使用6000。这些端口号是‘广为人知’的,因为在建立与特定的主机或服务的连接时,需要这些地址和目的地址进行通讯。
      微软用代码实现的
      TCP/IP协议是怎么实现的?

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类