谈计算机网络TCP协议的仿真与实现
谈计算机网络TCP协议的仿真与实现
TCP是计算机网络中运输层协议,连接着应用层和网络层,发挥着非常关键的作用。那么,计算机网络TCP协议的仿真与实现是?
作为计算机网络中较为重要的一种运输层协议,TCP连接着应用层和网络层,发挥着非常关键的作用。在TCP/IP协议中,我们重点关注TCP。本文主要立足于TCP协议的特点,详细介绍了TCP协议的主要特性。
一、TCP协议的概述
(一) TCP协议的特点
首先,TCP提供的连接服务稳定性有保证。相关的连接有着和打电弧相似的建立过程。先拨电话号码,当对方接通回复“喂”的时候,再告知对方自己是谁,完成任务后释放;其次,TCP提供连接必须是只针对两个客户端,也就是实现一对一的传输;最后,TCP提供全双工通信。这个特点就是保证通信的两端在使用TCP的时候可以随时通信,这样就可以及时传输数据。
(二) TCP端口号和套接字地址
TCP端口号:端口号只能对计算机中的进程进行标记,一般使用两个字节来完成标记工作,这也就是端口号的本地意义。当端口号并不是我们熟悉的状况时,要使用数值为1024~49151的等记端口号,使用的过程中要在UANA上登记,避免中间重复使用。无连接的UDP和TCP也有着自己的端口号,但是两个端口号彼此之间是相互独立的,各自有着不同的用途。套接字地址:CP中的套接字,一般在表达的过程中会用同一个名词表达不一样的含义。也就是说,当套接字被一个程序使用,那么socket函数中使用的函数以及调用它的端口都会叫做scocket。当紧急URG给系统发出有关紧急数据传输的通知时,相关的紧急数据应该作为优先级任务,尽快被传送。
二、 TCP的连接与释放
(一)建立连接
全双工是TCP传输数据的主要方式,在整个过程中有三次握手的方式来完成对该项目的建立,并且TCP的连接和释放都是使用客户—服务器方式,连接的建立也是从服务器开始。首先将SYN设置为1,然后将数据包头部的那个确认字段设置为x+1,接下来将最开始的序列号放在数据包头部的数列中。当这个链接的数据段被接受之后,那么相应的数据段就会被送到缓冲区,同时,服务器也能够及时收到客户端从另外一边发来的数据段,最后完成相关输出的确认。
(二) TCP的连接释放
TCP传输数据的'主要方式是全双工,因此,数据传输结束后,所有的连接都会被释放,并且每个连接的释放都是单个放行的。首先,当被A发送的数据能够到达B,为了杜绝失效的报文段在文本中存在,最后一个一个ACK被发送完后,相关的环节就会处理。这种办法就能够及时高效地处理掉连接过程中请求报文段的问题。
(三) TCP的连接复位
一般情况下,有三种情况需要复位。首先,当TCP连接的端口并不存在时,另一端TCP就能发送一个报文段,这时需要关闭相关的连接;其次,如果一端的TCP出现一些异常情况,那么就可以通过发送复位来终止连接;最后一种情况是,当一端的TCP长时间没有使用,那么就可以发送复位信息报,将其关闭。
(四) TCP拥塞控制
TCP的拥塞控制是TCP工作中存在的一种现实问题,会对整个工作造成一定程度的影响,因此,必须针对这种情况进行改进。首先,慢启动和拥塞避免。TCP用来发送数据是慢启动和拥塞避免算法展开的依据,这种算法的实现必须通过在TCP中增加两个变量;其次,快恢复和快重传。这种主要是针对发送端展开的,多种网络会导致端口查收到重复ACK,因此,应该找到事故原因,及时处理。
三、TCP的仿真实验
(一)仿真实验的设置
我们都知道TCP是有链接的可靠的传输层协议,所以在传输运用过程中也会出现错误。下面我们通过以下仿真实验,来了解TCP在传输FTP文件时一数据报丢失的情况,来详细分析下这一解决过程。
我们用OPNET来做TCP的仿真实验,这只是在一个比较简单的环境下在做关于TCP的仿真实验,测试出数据图通过分析和比较来观察TCP处理数据丢失包的具体工作原理和过程。选择“结果- - > >安排Pannels显示所有“查看保存结果。
顶部多媒体的快速decovery conquestion窗口由于“TCP雷诺”,在重新传输。这个conquestion窗口只是减少了一半,而不是1MSS,从而快速恢复。graphe的底部显示了发送之间的关系序列号码和收到seqment ack服务器上的数量。服务器故意把一个数据包给丢失,这时客户服务器就会发出三个ACK,会被重新发送。
这时把FTP的Command Mix的值设置为100%,把Inter-Requests设置为constant 3600,把File Size设置为FTP,把Server,type of serveice值设置为best effort,把RSVP parameters值设置为 None;用NotUsed来设置Back-End Custom Application值。
(二)仿真实验的过程
针对TCP数据传输开始时,拥塞窗口设置为最大的MSS值,慢启动算法开始,cwnd被设置为200,那么400,800,1600.......以103S,拥塞窗口达到6500的最大阈值,为了不让拥塞窗口将不会太增加网络阻塞引起的,然后执行拥塞避免算法,每一个RTT,拥塞窗口将增加一个单位,然后在107s当FTP数据包丢失,然后进行处理,拥塞窗口的值下降,TCP协议在慢启动和拥塞避免算法的实现,窗口的大小增长将呈现线性增长。设置最大窗口阈值,根据3响应消息重复判断丢包,重传丢失的数据包和直接的阈值,为当前拥塞窗口6500的一半,这是快速重传(Tahoe),然后转移到慢启动。然后再转入慢开始。
在窗口大小到达大约80000后,应该是收到3个连续ACK,若根据3个重复的应答报文就会知道有没有丢包,而且丢失的分组会被重传,此时的ssthresh的值就为拥塞窗口的一半,这样就进入了进入拥塞避免阶段。
(三)仿真实验小结
用OPNET做TCP的仿真实验,数据包丢失,TCP数据的变化都被形象的描绘出来了,很好的诠释了这一失误和改正过程。为TCP以后出错改正做了很好的例子。
四、结语
综上所述,网络普及的这个时代,让我们不断地认识到了计算机网络的重要性,学生们也开始越来越重视对TCP的研究。在简单的OSI体系中,TCP发挥着较为重要的作用,因此,我们必须深入研究其工作原理,便于在运输层中顺利地运用TCP协议。
;绛旓細渚嬪:浼犺緭鎺у埗鍗忚(TCP)銆佺敤鎴锋暟鎹姤鍗忚( UDP) 绛夈傝礋璐d富鏈轰腑涓や釜杩涚▼鐨勯氫俊,鍗崇鍒扮鐨勯氫俊銆備紶杈撳崟浣嶆槸鎶ユ枃娈垫垨鐢ㄦ埛鏁版嵁鎶ャ傚姛鑳藉涓: 鍙潬浼犺緭銆佷笉鍙潬浼犺緭 宸敊鎺у埗 娴侀噺鎺у埗 澶嶇敤鍒嗙敤 缃戠粶灞(Network Layer)鍐冲畾鏁版嵁鐨勮矾寰勯夋嫨鍜岃浆瀵,灏嗙綉缁滆〃澶(NH)鍔犺嚦鏁版嵁鍖,浠ュ舰鎴愭姤鏂囥傜綉缁滆〃澶村寘鍚...
绛旓細浜掕仈缃戝湴鍧锛氫篃灏辨槸IP鍦板潃锛屼竴鑸负缃戠粶鍙+瀛愮綉鍙+涓绘満鍙 鍩熷悕绯荤粺锛氶氫織鐨勬潵璇达紝灏辨槸涓涓暟鎹簱锛屽彲浠ュ皢涓绘満鍚嶈浆鎹㈡垚IP鍦板潃 RFC锛TCP/IP鍗忚鐨鏍囧噯鏂囨。 绔彛鍙凤細涓涓昏緫鍙风爜锛孖P鍖呮墍甯︽湁鐨勬爣璁 Socket锛氬簲鐢ㄧ紪绋嬫帴鍙 鏁版嵁閾捐矾灞傜殑宸ヤ綔鐗规э細涓篒P妯″潡鍙戦佸拰鎺ユ敹IP鏁版嵁鎶 涓篈RP妯″潡鍙戦丄RP璇锋眰鍜屾帴鏀...
绛旓細TCP/IP鏄緵宸茶繛鎺ュ洜鐗圭綉鐨璁$畻鏈杩涜閫氫俊鐨勯氫俊鍗忚銆俆CP/IP鍗忚TransmissionControlProtocol/InternetProtocol鐨勭畝鍐欙紝涓瘧鍚嶄负浼犺緭鎺у埗鍗忚/鍥犵壒缃戜簰鑱斿崗璁紝鍙堝悕缃戠粶閫氳鍗忚锛屾槸Internet鏈鍩烘湰鐨勫崗璁両nternet鍥介檯浜掕仈缃戠粶鐨鍩虹锛岀敱缃戠粶灞傜殑IP鍗忚鍜屼紶杈撳眰鐨TCP鍗忚缁勬垚銆俆CP/IP浼犺緭鍗忚锛屽嵆浼犺緭鎺у埗/缃戠粶...
绛旓細TCP/IP锛屼负浼犺緭鎺у埗鍗忚/浜掕仈缃戠粶鍗忚銆 TCP/IP鏄竴绉嶇綉缁滈氫俊鍗忚锛屽畠瑙勮寖浜嗙綉缁滀笂鐨勬墍鏈夐氫俊璁惧锛屽挨鍏舵槸涓涓富鏈轰笌鍙︿竴涓富鏈轰箣闂寸殑鏁版嵁寰鏉ユ牸寮忎互鍙婁紶閫佹柟寮忋俆CP/IP鏄疘NTERNET鐨勫熀纭鍗忚锛屼篃鏄竴绉鐢佃剳鏁版嵁鎵撳寘鍜屽鍧鐨勬爣鍑嗘柟娉曘傚湪鏁版嵁浼犻佷腑锛屽彲浠ュ舰璞″湴鐞嗚В涓烘湁涓や釜淇″皝锛孴CP鍜孖P灏卞儚鏄俊灏侊紝瑕...
绛旓細TCP/IP鏄敤浜庤绠楁満閫氫俊鐨勪竴缁勫崗璁紝鎴戜滑閫氬父绉板畠涓篢CP/IP鍗忚鏃忋傚畠鏄70骞翠唬涓湡缇庡浗鍥介槻閮ㄤ负鍏禔RPANET骞垮煙缃戝紑鍙戠殑缃戠粶浣撶郴缁撴瀯鍜屽崗璁鏍囧噯锛屼互瀹冧负鍩虹缁勫缓鐨処NTERNET鏄洰鍓嶅浗闄呬笂瑙勬ā鏈澶х殑璁$畻鏈虹綉缁锛屾鍥犱负INTERNET鐨勫箍娉涗娇鐢紝浣垮緱TCP/IP鎴愪簡浜嬪疄涓婄殑鏍囧噯銆備箣鎵浠ヨTCP/IP鏄竴涓崗璁棌锛屾槸鍥犱负TCP/...
绛旓細TCP/IP鍙傝冩ā鍨嬫槸涓涓敤浜庢寚瀵璁$畻鏈虹綉缁閫氫俊鍗忚鐨妗嗘灦锛屽畠鏄簰鑱旂綉閫氫俊鍗忚鐨勬牳蹇冩爣鍑嗕箣涓銆傚畠鐢卞洓涓眰娆$粍鎴愶紝鍒嗗埆鏄綉缁滄帴鍙e眰锛圢etwork Interface Layer锛夈佺綉缁滃眰锛圛nternet Layer锛夈佷紶杈撳眰锛圱ransport Layer锛夊拰搴旂敤灞傦紙Application Layer锛夈俆CP/IP鍙傝冩ā鍨嬬殑鍥涘眰鍒嗗埆鍏锋湁浠ヤ笅鍔熻兘锛氱綉缁滄帴鍙e眰锛圢etwork...
绛旓細鍦╡z80绯荤粺涓紝浣滆呭熀浜嶼ilog ez80190寮鍙戞澘锛屽唴缃缃戠粶鑺墖锛涜屽湪ARM7绯荤粺涓紝浣滆呬娇鐢⊿kyeye锛屼竴涓狝RM7TDMI鎸囦护绾ц蒋浠浠跨湡鍣紝鏈杩戞坊鍔犱簡妯℃嫙鐨凬e2k缃戠粶鑺墖銆侺wIP鏄憺澹璁$畻鏈绉戝闄㈠紑鍙戠殑杞诲瀷TCP/IP鍗忚鏍堬紝鍏剁壒鐐规槸鍐呭瓨鍗犵敤浣庯紝閫傚悎浣庣璁惧銆傜Щ妞嶅伐浣滀富瑕佸寘鎷涓嶤PU銆佺紪璇戝櫒鐩稿叧鐨勫ご鏂囦欢淇敼锛屼互鍙婁笌...
绛旓細涔︿腑绔犺妭娑电洊浜嗚濡傚眬鍩熺綉鐨勪粙璐ㄨ闂帶鍒讹紝IP鍦板潃鍜璺敱鍘熺悊锛屼互鍙TCP/IP鍗忚鐨鏈鏂板彂灞曪紝濡侷Pv6鍜岃矾鐢卞崗璁OSPF鍜孊GP銆傛澶栵紝杩樻湁瀵逛紶杈撳眰鐨勫彲闈犳湇鍔″拰搴旂敤灞傚崗璁殑娣卞叆瑙f瀽锛屽DNS鍜孒TTP鍗忚銆傞氳繃瀹炶返鎬у疄楠岋紝璇昏呭彲浠ュ珐鍥烘墍瀛︼紝鎺屾彙缃戠粶缂栫▼鍜岀郴缁熷疄鐜扮殑鍩虹鐭ヨ瘑銆傛棤璁轰綘鏄璁$畻鏈虹綉缁璇剧▼鐨勫鍛橈紝杩樻槸...
绛旓細杩4灞傚垎鍒负锛氬簲鐢ㄥ眰锛氬簲鐢ㄧ▼搴忛棿娌熼氱殑灞傦紝濡傜畝鍗曠數瀛愰偖浠朵紶杈擄紙SMTP锛夈佹枃浠朵紶杈撳崗璁紙FTP锛夈缃戠粶杩滅▼璁块棶鍗忚锛圱elnet锛夌瓑銆備紶杈撳眰锛氬湪姝ゅ眰涓紝瀹冩彁渚涗簡鑺傜偣闂寸殑鏁版嵁浼犻佹湇鍔★紝濡浼犺緭鎺у埗鍗忚锛圱CP锛夈佺敤鎴锋暟鎹姤鍗忚锛圲DP锛夌瓑锛孴CP鍜孶DP缁欐暟鎹寘鍔犲叆浼犺緭鏁版嵁骞舵妸瀹冧紶杈撳埌涓嬩竴灞備腑锛岃繖涓灞傝礋璐d紶閫...
绛旓細RWhois:杩滅▼鐩綍璁块棶鍗忚 (RWhois Protocol) SLP:鏈嶅姟瀹氫綅鍗忚 (SLP:Service Location Protocol) SMTP:绠鍗曢偖浠朵紶杈撳崗璁 (SMTP:Simple Mail Transfer Protocol) SNMP:绠鍗缃戠粶绠$悊鍗忚 (SNMP:Simple Network Management Protocol) SNTP:绠鍗曠綉缁滄椂闂村崗璁 (SNTP:Simple Network Time Protocol) TELNET:TCP/IP 缁堢浠跨湡鍗忚 ...