单片机TCP/IP的已有的单片机TCP/IP协议栈
由于TCP协议栈的程序流程较为复杂,因为程序中需要处理对方发送过来的数据、发起的连接,而我方并不知道对方会何时进行什么样的操作,这就使得协议处理起来较为复杂。另外一个原因是单片机TCP/IP协议栈的稳定性是以非常重要的问题,一个稳定的协议栈需要在实际应用中经过长时间的测试,所以编写一个稳定的单片机TCP/IP协议栈更加困难。为此另外一种选择就是使用现有的TCP/IP协议栈。1. eCos单片机TCP/IP协议栈:eCos TCP/IP栈是涉及与eCos操作系统/内核一起运行的。eCos(和TCP/IP栈)由大量处理其结构支持。eCos TCP/IP栈当前发布了一个测试版,作为一个单独的模块。2. ZLIP 51单片机TCP/IP协议栈:ZLIP是专门为51单片机设计的嵌入式TCP/IP协议栈,可以在有操作系统和没有操作系统情况下运行,具有代码量适中、运行速度快、用户接口简单、兼容BSD socket接口的特点。实现了TCP、UDP、ICMP、ARP协议,ZLWeb实现了HTTP协议。支持多TCP连接、多UDP连接同时运行,支持在uc/os-II操作系统下多任务运行数据收发。可以用于51单片机TCP/IP上网解决方案。3. uc/ip 单片机TCP/IP协议栈:uC/IP(mew-kip)是为为控制其设计的一个TCP/IP协议栈。代码基于BSD(很像所有其它栈)但对非常小的覆盖范围功能有所减少。它当前为Linux和DOS目标而建。4. BSD 单片机TCP/IP协议栈:BSD栈历史上是其他商业栈的开始点,大多数专业TCP/IP栈(如带Wind-River VxWorks内核的)是BSD栈派生的。这是因为BSD在BSD许可协议下提供了他们的栈,它们的许用证使你能以修改或未修改的形式结合它们的代码而无须向创建者付版税。与GPL许用证相比,如果你结合GPL源代码,后者要求你的GPL中公开你的源代码。5. lwIP 单片机TCP/IP协议栈:lwIP(轻型)TCP/IP栈是TCP/IP协议栈的一个小型实现。它包括带IP和ICMP的TCP和UDP传输层。还提供一个可选的BSD套结籽API。为了性能,还包括一个零拷贝API。LwIP协议栈是为嵌入式系统设计的并能适合40KB的ROM和几百字节的RAM。为了可移植性它用C编写。6. uIP 单片机TCP/IP协议栈:uIP是专门为8位和16单片机设计的一个非常小的TCP/IP协议栈。uIP完全用C编写,以此可以移植到各种不同的结构和操作系统上。一个编译的栈可以有几KB ROM或几百字节RAM中运行。uIP还包括一个HTTP服务器作为服务内容。7. TinyTCP 单片机TCP/IP协议栈:TinyTCP栈是TCP/IP的一个非常小的简单的实现,它包括一个FTP客户。TinyTCP是为烧入ROM设计的并且现在开始对大端结构似乎是有用的(初始目标是68000芯片)。TinyTCP也包括一个简单的以太网驱动器用于3Com多总线卡。8. WATTCP 单片机TCP/IP协议栈:WATTCP是为嵌入基于DOS的系统而设计的一个小型TCP/IP栈。它包括一个Real Mode DOS版本和另一个32位扩展环境版本。

TCP/IP四层模型
ISO制定的OSI参考模型的过于庞大、复杂招致了许多批评。与此对照,由技术人员自己开发的TCP/IP协议栈获得了更为广泛的应用。 如图所示,是TCP/IP参考模型和OSI参考模型的对比示意图。在TCP/IP参考模型中,去掉了OSI参考模型中的会话层和表示层(这两层的功能被合并到应用层实现)。同时将OSI参考模型中的数据链路层和物理层合并为主机到网络层。下面,分别介绍各层的主要功能。实际上TCP/IP参考模型没有真正描述这一层的实现,只是要求能够提供给其上层-网络互连层一个访问接口,以便在其上传递IP分组。由于这一层次未被定义,所以其具体的实现方法将随着网络类型的不同而不同。网络互连层是整个TCP/IP协议栈的核心。它的功能是把分组发往目标网络或主机。同时,为了尽快地发送分组,可能需要沿不同的路径同时进行分组传递。因此,分组到达的顺序和发送的顺序可能不同,这就需要上层必须对分组进行排序。网络互连层定义了分组格式和协议,即IP协议(Internet Protocol)。网络互连层除了需要完成路由的功能外,也可以完成将不同类型的网络(异构网)互连的任务。除此之外,网络互连层还需要完成拥塞控制的功能。在TCP/IP模型中,传输层的功能是使源端主机和目标端主机上的对等实体可以进行会话。在传输层定义了两种服务质量不同的协议。即:传输控制协议TCP(transmission control protocol)和用户数据报协议UDP(user datagram protocol)。TCP协议是一个面向连接的、可靠的协议。它将一台主机发出的字节流无差错地发往互联网上的其他主机。在发送端,它负责把上层传送下来的字节流分成报文段并传递给下层。在接收端,它负责把收到的报文进行重组后递交给上层。TCP协议还要处理端到端的流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方发送的大量数据。UDP协议是一个不可靠的、无连接的协议,主要适用于不需要对报文进行排序和流量控制的场合。TCP/IP模型将OSI参考模型中的会话层和表示层的功能合并到应用层实现。应用层面向不同的网络应用引入了不同的应用层协议。其中,有基于TCP协议的,如文件传输协议(File Transfer Protocol,FTP)、虚拟终端协议(TELNET)、超文本链接协议(Hyper Text Transfer Protocol,HTTP),也有基于UDP协议的。IP协议是TCP/IP协议族中最为核心的协议。它提供不可靠、无连接的服务,也即依赖其他层的协议进行差错控制。在局域网环境,IP协议往往被封装在以太网帧中传送。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传送。IP报文格式:IP头部格式:其中:● 版本(Version)字段:占4比特。用来表明IP协议实现的版本号,当前一般为IPv4,即0100。● 报头长度(Internet Header Length,IHL)字段:占4比特。是头部占32比特的数字,包括可选项。普通IP数据报(没有任何选项),该字段的值是5,即160比特=20字节。此字段最大值为60字节。● 服务类型(Type of Service ,TOS)字段:占8比特。其中前3比特为优先权子字段(Precedence,现已被忽略)。第8比特保留未用。第4至第7比特分别代表延迟、吞吐量、可靠性和花费。当它们取值为1时分别代表要求最小时延、最大吞吐量、最高可靠性和最小费用。这4比特的服务类型中只能置其中1比特为1。可以全为0,若全为0则表示一般服务。● 总长度字段:占16比特。指明整个数据报的长度(以字节为单位)。最大长度为65535字节。● 标志字段:占16比特。用来唯一地标识主机发送的每一份数据报。通常每发一份报文,它的值会加1。● 标志位字段:占3比特。标志一份数据报是否要求分段。● 段偏移字段:占13比特。如果一份数据报要求分段的话,此字段指明该段偏移距原始数据报开始的位置。● 生存期(TTL:Time to Live)字段:占8比特。用来设置数据报最多可以经过的路由器数。由发送数据的源主机设置,通常为32、64、128等。每经过一个路由器,其值减1,直到0时该数据报被丢弃。● 协议字段:占8比特。指明IP层所封装的上层协议类型,如ICMP(1)、IGMP(2) 、TCP(6)、UDP(17)等。● 头部校验和字段:占16比特。内容是根据IP头部计算得到的校验和码。计算方法是:对头部中每个16比特进行二进制反码求和。(和ICMP、IGMP、TCP、UDP不同,IP不对头部后的数据进行校验)。● 源IP地址、目标IP地址字段:各占32比特。用来标明发送IP数据报文的源主机地址和接收IP报文的目标主机地址。可选项字段:占32比特。用来定义一些任选项:如记录路径、时间戳等。这些选项很少被使用,同时并不是所有主机和路由器都支持这些选项。可选项字段的长度必须是32比特的整数倍,如果不足,必须填充0以达到此长度要求。TCP是一种可靠的、面向连接的字节流服务。源主机在传送数据前需要先和目标主机建立连接。然后,在此连接上,被编号的数据段按序收发。同时,要求对每个数据段进行确认,保证了可靠性。如果在指定的时间内没有收到目标主机对所发数据段的确认,源主机将再次发送该数据段。 TCP是一种可靠的、面向连接的字节流服务。源主机在传送数据前需要先和目标主机建立连接。然后,在此连接上,被编号的数据段按序收发。同时,要求对每个数据段进行确认,保证了可靠性。如果在指定的时间内没有收到目标主机对所发数据段的确认,源主机将再次发送该数据段。TCP头部结构:其中:● 源、目标端口号字段:占16比特。TCP协议通过使用"端口"来标识源端和目标端的应用进程。端口号可以使用0到65535之间的任何数字。● 顺序号字段:占32比特。用来标识从TCP源端向TCP目标端发送的数据字节流,它表示在这个报文段中的第一个数据字节。● 确认号字段:占32比特。只有ACK标志为1时,确认号字段才有效。它包含目标端所期望收到源端的下一个数据字节。● 头部长度字段:占4比特。给出头部占32比特的数目。没有任何选项字段的TCP头部长度为20字节;最多可以有60字节的TCP头部。● 标志位字段(U、A、P、R、S、F):占6比特。各比特的含义如下:◆ URG:紧急指针(urgent pointer)有效。◆ ACK:确认序号有效。◆ PSH:接收方应该尽快将这个报文段交给应用层。◆ RST:重建连接。◆ SYN:发起一个连接。◆ FIN:释放一个连接。● 窗口大小字段:占16比特。此字段用来进行流量控制。单位为字节数,这个值是本机期望一次接收的字节数。● TCP校验和字段:占16比特。对整个TCP报文段,即TCP头部和TCP数据进行校验和计算,并由目标端进行验证。● 紧急指针字段:占16比特。它是一个偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。● 选项字段:占32比特。可能包括"窗口扩大因子"、"时间戳"等选项。UDP是一种不可靠的、无连接的数据报服务。源主机在传送数据前不需要和目标主机建立连接。数据被冠以源、目标端口号等UDP报头字段后直接发往目的主机。这时,每个数据段的可靠性依靠上层协议来保证。在传送数据较少、较小的情况下,UDP比TCP更加高效。UDP头部结构:● 源、目标端口号字段:占16比特。作用与TCP数据段中的端口号字段相同,用来标识源端和目标端的应用进程。● 长度字段:占16比特。标明UDP头部和UDP数据的总长度字节。● 校验和字段:占16比特。用来对UDP头部和UDP数据进行校验。和TCP不同的是,对UDP来说,此字段是可选项,而TCP数据段中的校验和字段是必须项。在每个TCP、UDP数据段中都包含源端口和目标端口字段。有时,我们把一个IP地址和一个端口号合称为一个套接字(Socket),而一个套接字对(Socket pair)可以唯一地确定互连网络中每个TCP连接的双方(客户IP地址、客户端口号、服务器IP地址、服务器端口号)。如图所示,是常见的一些协议和它们对应的服务端口号。需要注意的是,不同的应用层协议可能基于不同的传输层协议,如FTP、TELNET、SMTP协议基于可靠的TCP协议。TFTP、SNMP、RIP基于不可靠的UDP协议。同时,有些应用层协议占用了两个不同的端口号,如FTP的20、21端口,SNMP的161、162端口。这些应用层协议在不同的端口提供不同的功能。如FTP的21端口用来侦听用户的连接请求,而20端口用来传送用户的文件数据。再如,SNMP的161端口用于SNMP管理进程获取SNMP代理的数据,而162端口用于SNMP代理主动向SNMP管理进程发送数据。还有一些协议使用了传输层的不同协议提供的服务。如DNS协议同时使用了TCP 53端口和UDP 53端口。DNS协议在UDP的53端口提供域名解析服务,在TCP的53端口提供DNS区域文件传输服务。 来自陈十一

什么是“TCP/IP协议”?TCP和IP各有什么作用?
TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不同网络间实现信息传输的协议簇。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议簇,只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。TCP作用:当应用层向TCP层发送用于网间传输的、用8位字节表示的数据流,TCP则把数据流分割成适当长度的报文段,最大传输段大小(MSS)通常受该计算机连接的网络的数据链路层的最大传送单元(MTU)限制。之后TCP把数据包传给IP层,由它来通过网络将包传送给接收端实体的TCP层。IP作用:IP信息包的传送。P信息包的分割与重组。TCP/IP协议缺陷(1)该模型没有明显地区分服务、接口和协议的概念。因此,对于使用新技术来设计新网络,TCP/IP模型不是一个太好的模板。(2)TCP/IP模型完全不是通用的,并且不适合描述除TCP/IP模型之外的任何协议栈。(3)链路层并不是通常意义上的一层。它是一个接口,处于网络层和数据链路层之间。接口和层间的区别是很重要的。以上内容参考百度百科-IP以上内容参考百度百科-TCP以上内容参考百度百科-TCP/IP协议
TCP/IP协议叫做传输控制/网际协议,它是Internet国际互联网络的基础。TCP/IP是网络中使用的基本的通信协议。 虽然从名字上看TCP/IP包括两个协议,传输控制协议(TCP)和网际协议(IP),但TCP/IP实际上是一组协议,它包括上百个各种功能的协议,如:远程登录、文件传输和电子邮件等,而TCP协议和IP协议是保证数据完整传输的两个基本的重要协议。通常说TCP/IP是Internet协议族,而不单单是TCP和IP。 TCP/IP协议的基本传输单位是数据包(datagram),TCP协议负责把数据分成若干个数据包,并给每个数据包加上包头(就像给一封信加上信封),包头上有相应的编号,以保证在数据接收端能将数据还原为原来的格式,IP协议在每个包头上再加上接收端主机地址,这样数据找到自己要去的地方,如果传输过程中出现数据丢失、数据失真等情况,TCP协议会自动要求数据重新传输,并重新组包。总之,IP协议保证数据的传输,TCP协议保证数据传输的质量。TCP/IP协议数据的传输基于TCP/IP协议的四层结构:应用层、传输层、网络层、接口层,数据在传输时每通过一层就要在数据上加个包头,其中的数据供接收端同一层协议使用,而在接收端,每经过一层要把用过的包头去掉,这样来保证传输数据的格式完全一致。
第一步:下载兔子IP转换器,安装到你的电脑上。 第二步:注册账号第三步:登录软件,连接你要修改的城市IP节点第四步:打开浏览器查询IP是修改之后的IP了就可以解决你的问题了。动态和静态线路比较多,可以随意切换 解决网络卡顿

TCP/IP协议栈网络层常见协议
TCP/IP协议栈网络层常见协议汇总大家对网络分层协议栈了解么?我们来回顾一下:物理层——链路层——网络层——传输层——应用层我们之前着重介绍的还是网络层这方面的知识,包括IP协议、IP地址、路由和转发等等,都是网络层的基础知识,这一届我们来介绍一些常用的网络层协议。网络层的协议有很多,在这里我们就挑一些常见,常用的协议来介绍:PING大家对于ping肯定都不陌生,尤其是喜欢玩游戏的同学,ping值过高的话,就会严重影响游戏体验,ping从严格意义上讲不算一种协议,但是在这里也一并将其介绍一下,因为它太有名了。我们先来介绍一下ping的流程:windows用户可以用cmd进入用户终端,输入ping+ip地址,便可以进行一次ping,如下图所示:如果你输入的IP地址有效且可达,则会收到相应对端发来的回复报文,如下图所示:这里的对端是指IP地址所在的服务器,而所谓的ping指,就可以简单理解为从某个数据包发送到服务器开始,到收到服务器应答包为止的时间就是ping。一般以毫秒计算,如果你输入的IP地址有误,或者IP地址不可达,则会受到以下信息:ICMP大家可能对于ICMP协议有些陌生,事实上上面介绍得ping,其回复报文实际上就是ICMP差错报文,ICMP报文一般分为两种类型,一种是ICMP查询报文,它的作用很明显,就是用来在主机或者路由器之间传递控制信息的协议,所谓的传递信息就是指目的地址是否可达,路由是否可达等等状态信息,ICMP协议并不传输数据,但是它却能够很好地传递状态信息,而刚才介绍的ping程序,结合ICMP协议之后的完整过程就是:1、首先查本地arp cache信息,看是否有对方的mac地址和IP地址映射条目记录;2、如果没有,则发起一个arp请求广播报文,等待对方告知具体的mac地址;3、收到arp响应包之后,获得某个IP对应的具体mac地址,有了物理地址之后才可以开始通信,同事对ip-mac地址做一个本地cache;4、发出icmp echo request包,收到icmp echo reply包 。前面3条还是一个查arp表获取对端mac的三层IP转发基本流程,而第4条规则就是用ICMP报文来完成回显信息的输出。既然提到了ping和icmp,那么就顺便介绍一种常见的IP攻击方式“Ping of Death”(死亡之ping) 。Ping of Death可以利用操作系统规定的ICMP数据包最大尺寸不超过64KB这一规定,向主机发起死亡之ping攻击,如果ICMP数据包的尺寸超过64KB上限时,主机就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使主机死机。ARP在大多数的TCP/IP视线中,ARP是一个基础协议,但是它的运行对于应用程序或系统管理员来说一般都是透明的。ARP告诉缓存在它的运行过程中非常关键。我们可以用arp命令对高速缓存进行检查和操作。高速缓存中的每一项内容都有一个定时器,根据它来删除不完整和完整的.表项。arp命令可以显示和修改ARP高速缓存中的内容,我们介绍了ARP的一般操作,同时也介绍了一些特殊的功能,委托ARP和免费ARP.。简单总结起来就是,在IP转发时,仅仅知道对端IP地址是无法完成转发的,我们需要知道对短的MAC地址才能够进行转发,这个时候加入本地的ARP缓存表中查不到对端的MAC,那么则会发送ARP学习报文,去下游学习MAC,只有学到了MAC才能进一步的转发,而ARP在其中就起到了存储IP地址与MAC地址映射关系的作用,因此ARP协议是网络转发中非常重要的一个协议!最后我们来回顾一下,这一节介绍了ping程序,ICMP协议和ARP协议,事实上网络层的协议还有很多很多,但是以上接种协议都是比较常用的协议,大家有兴趣可以深入了解一下。 ;

tcp/ip协议栈各个层次的功能
TCP/IP协议栈包括四层,从下网上是:主机-网络层、互联网络层、运输层和应用层。 主机-网络层:与OSI参考模型的数据链路层和物理层对应,物理层主要功能是提供传输介质和在传输介质上传输比特序列的手段,数据链路层的功能是采用差错控制与流量控制方法,使有差错的物理链路变成无差错的数据链路。互联网络层:主要是IP协议,它提供“尽力而为”的网络分组传输服务,包括分组转发和路由选择。传输层:为主机进程对话建立端到端的连接,它通过端口号来标识不同的进程。 应用层:是为开发各种网络应用而配套开发的各种对应协议,比如为Web应用开发的Http协议。

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