⑴ 浠涔堟槸鎶ユ枃IP鎶ユ枃镄勭粨鏋
缃戠粶涔嬮棿浜掕繛镄勫岗璁涔熷氨鏄涓鸿$畻链虹绣缁灭浉浜掕繛鎺ヨ繘琛岄氢俊钥岃捐$殑鍗忚銆傚湪锲犵壒缃戜腑锛屽畠鏄鑳戒娇杩炴帴鍒扮绣涓婄殑镓链夎$畻链虹绣缁滃疄鐜扮浉浜挜氢俊镄勪竴濂楄勫垯锛岃勫畾浜呜$畻链哄湪锲犵壒缃戜笂杩涜岄氢俊镞跺簲褰挞伒瀹堢殑瑙勫垯銆
浠涔堟槸鎶ユ枃锛
鎶ユ枃(message)鏄缃戠粶涓浜ゆ崲涓庝紶杈撶殑鏁版嵁鍗曞厓锛屽嵆绔欑偣涓娆℃ц佸彂阃佺殑鏁版嵁鍧椼傛姤鏂囧寘钖浜嗗皢瑕佸彂阃佺殑瀹屾暣镄勬暟鎹淇℃伅锛屽叾闀跨煭寰堜笉涓镊达纴闀垮害涓嶉檺涓斿彲鍙樸
涓銆両P鏁版嵁鎶ユ枃缁撴瀯濡备笅锛
钖勫瓧娈佃В閲婂备笅锛
1锛寁ersion锛氱増链鍙凤纴4bits锛屾寚IP鍗忚镄勭増链銆
2锛宧eader length锛氶栭儴闀垮害锛4bits锛屽崟浣崭负4瀛楄妭锛屾晠链澶ч暱搴︿负4*(2^4-1)=60瀛楄妭锛岄栭儴锲哄畾閮ㄥ垎闀垮害涓20瀛楄妭锛屽彲鍙橀儴鍒嗕负0~40瀛楄妭銆
3锛宒ifferentiated services锛氭湇锷$被鍨嬶纴8bits锛岀粍鎴愬备笅锛
杩囩▼瀛楁碉细3浣嶏纴璁剧疆浜嗘暟鎹鍖呯殑閲嶈佹э纴鍙栧艰秺澶ф暟鎹瓒婇吨瑕侊纴鍙栧艰寖锲翠负锛0(姝e父)~ 7(缃戠粶鎺у埗)
寤惰繜瀛楁碉细1浣嶏纴鍙栧硷细0(姝e父)銆1(链熺壒浣庣殑寤惰繜)
娴侀噺瀛楁碉细1浣嶏纴鍙栧硷细0(姝e父)銆1(链熺壒楂樼殑娴侀噺)
鍙闱犳у瓧娈碉细1浣嶏纴鍙栧硷细0(姝e父)銆1(链熺壒楂樼殑鍙闱犳)
鎴愭湰瀛楁碉细1浣嶏纴鍙栧硷细0(姝e父)銆1(链熺壒链灏忔垚链)
淇濈暀瀛楁碉细1浣 锛屾湭浣跨敤
4锛宼otal length锛氭婚暱搴︼纴16bits锛岄栭儴锷犱笂鏁版嵁镄勯暱搴︽诲拰锛屽崟浣崭负瀛楄妭锛屾晠鏁版嵁鎶ユ渶澶ч暱搴︿负2^16-1=65525瀛楄妭銆傚彟澶栨婚暱搴﹀繀椤讳笉瓒呰繃链澶т紶阃佸崟鍏僊TU銆
5锛宨dentification锛氭爣璇嗭纴16bits锛岃℃暟鍣锛屼綔涓烘暟鎹鎶ユ爣璇嗐傚綋鏁版嵁鎶ラ渶瑕佸垎鐗囨椂锛岃ユ爣璇嗙敤𨱒ヨ〃绀哄悓灞炰竴涓鏁版嵁鎶ョ殑鍒嗙墖銆傞渶瑕佸垎鐗囨椂缁揿悎浠ヤ笅flags銆乫ragment offset涓璧蜂娇鐢ㄣ
6锛宖lags锛氭爣蹇楋纴3bits锛岃颁负D0-D1-D2锛屽悇镊镒忎箟濡备笅锛
D0锛1琛ㄧず链夊悗缁鍒嗙墖锛0琛ㄧず璇ユ暟鎹鎶ヤ负链钖庝竴鐗囥
D1锛1琛ㄧず涓嶅垎鐗囷纴0琛ㄧず鍒嗙墖銆
D2锛氢缭鐣欎綅锛屾湭浣跨敤銆
7锛宖ragment offset锛氱墖锅忕Щ锛13bits锛屽崟浣崭负8瀛楄妭锛岃〃绀哄垎鐗囧悗镄勬煇鍒嗙墖鍦ㄥ师鍒嗙粍涓镄勭浉瀵逛綅缃銆
8锛宼ime to live锛氱敓瀛樻椂闂达纴8bits锛岃〃绀烘暟鎹鎶ュ湪缃戠粶涓镄勫垮懡锛屽崟浣崭负璺筹纴缁忚繃涓涓璺鐢辫〃绀轰竴璺筹纴璇ュ煎噺 涓锛屽埌闆跺垯涓㈠纯銆
9锛宲rotocal锛氩岗璁锛8bits锛屾寚鍑轰娇鐢ㄨュ寘瑁圭殑涓婂眰鍗忚锛屽俆CP=6锛孖CMP=1锛孶DP=17绛夈
10锛宧eader checksum锛氶栭儴(涓嶅寘𨰾鏁版嵁閮ㄥ垎)妫楠屽拰锛16bits銆傝繖閲屼笉閲囩敤 CRC 妫楠岀爜钥岄噰鐢ㄧ亩鍗旷殑钬滃弽镰佺畻链姹傚拰钬濊$畻鏂规硶銆
11锛宻ource address锛氭簮鍦板潃锛32bits锛屽嵆婧怚P鍦板潃銆
12锛宒estination address锛氱洰镄勫湴鍧锛32bits锛屽嵆鐩镄処P鍦板潃銆
13锛宱ptions锛氩彲阃夊瓧娈碉纴闀垮害鍙鍙桡纴1~40瀛楄妭銆傜敤浜庡炲姞IP鏁版嵁鎶ョ殑鎺у埗锷熻兘銆
14锛屽彟澶栬缮链変釜濉鍏呭瓧娈碉纴涓婂浘涓链鏄剧ず锛岃ュ瓧娈电敤𨱒ヤ缭璇侀栭儴镄勯暱搴︿负4瀛楄妭镄勬暣鏁板嶃
15锛娈ata锛氱敤鎴锋暟鎹銆
浜屻佺敤鎶揿寘宸ュ叿鎶揑P鏁版嵁鎶ワ纴鎴锲惧备笅锛
鐢卞浘鍙鐭ワ纴璇IP棣栭儴鍙链20涓瀛楄妭锛屽悇瀛楁靛煎垎鍒涓猴细
version(4)锛4銆
header length(4)锛5 * 4 = 20 bytes銆
differentiated services(8)锛歰x00銆
total length(16)锛歰x0034锛3*16 + 4 = 52 bytes锛岀敱涓婂浘鍙鐭ワ纴IP鎶ユ枃闀垮害涓66 -14 = 52锛屽墠闱14瀛楄妭涓轰互澶缃戝抚涓镄勯儴鍒嗘暟鎹锛屽叾瀹炲氨鏄涓や釜mac(6byte)鍦板潃鍐嶅姞涓涓2瀛楄妭镄则ype銆
identification(16)锛歰x4c46锛19526銆
flags(3)锛氢簩杩涘埗010锛屽彲鐭ヨユ暟鎹鎶ヤ笉鍒嗙墖涓斾负链钖庣墖銆
fragment offset(13)锛氢簩杩涘埗0 0000 0000 0000銆
time to live(8)锛0x40锛屽嵆64璺炽
protocal(8)锛0x06锛屽嵆涓婂眰鍗忚涓篢CP銆
header checksum(16)锛0xd7e8銆
source address(32)锛0xc0a80569锛屽嵆192.168.5.105銆
destination address(32)锛歰x774bd938锛屽嵆119.75.217.56銆
options(1~40)锛氭棤
⑵ 计算机网络——TCP/UDP协议
计算机网络七层模型中,传输层有两个重要的协议:
(1)用户数据报协议UDP (User Datagram Protocol)
(2)传输控制协议TCP (Transmission Control Protocol)
UDP 在传送数据之前不需要先建立连接。远地主机的运输层在收到UDP 报文后,不需要给出任何确认。虽然UDP 不提供可靠交付,但在某些情况下UDP 却是一种最有效的工作方式。
TCP 则提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。TCP 不提供广播或多播服务。由于TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销,如确认、流量控制、计时器以及连接管理等。
UDP 的主要特点是:
首部手段很简单,只有8 个字节,由四个字段组成,每个字段的长度都是两个字节。
前面已经讲过,每条TCP 连接有两个端点,TCP 连接的端点叫做套接字(socket)或插口。套接字格式如下:
套接宁socket= (IP 地址:端口号’)
每一条TCP 连接唯一地被通信两端的两个端点(即两个套接宇)所确定。即:
TCP 连接= {socket1, socket2} = {(IP1: port1), (IP2: port2)}
3次握手链接
4次握手释放链接
断开连接请求可以由客户端发出,也可以由服务器端发出,在这里我们称A端向B端请求断开连接。
各个状态节点解释如下:
下面为了讨论问题的万便,我们仅考虑A发送数据而B 接收数据并发送确认。因此A 叫做发送方,而B 叫做接收方。
“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。像上述的这种可靠传输协议常称为自动重传请求ARQ (Automatic Repeat reQuest)。意思是重传的请求是自动进行的。接收方不需要请求发送方重传某个出错的分组。
滑动窗口协议比较复杂,是TCP 协议的精髓所在。这里先给出连续ARQ 协议最基本的概念,但不涉提到许多细节问题。详细的滑动窗口协议将在后面讨论。
下图表示发送方维持的发送窗口,它的意义是:位于发送窗口内的5 个分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。
连续ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。
接收方一般都是采用 累积确认 的方式。这就是说,接收方不必对收到的分组逐个发送确认,而是可以在收到几个分组后,对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都己正确收到了。
累积确认 的优点是容易实现,即使确认丢失也不必重传。但缺点是不能向发送方反映出接收方己经正确收到的所有分组的信息。
例如,如果发送方发送了前5 个分组,而中间的第3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。这就叫做Go-back-N (回退N ),表示需要再退回来重传己发送过的N 个分组。可见当通信线路质量不好时,连续ARQ 协议会带来负面的影响。
TCP 的滑动窗口是以字节为单位的。现假定A 收到了B 发来的确认报文段,其中窗口是20 (字节),而确认号是31 (这表明B 期望收到的下一个序号是31 ,而序号30 为止的数据己经收到了)。根据这两个数据, A 就构造出自己的发送窗口,其位置如图所示。
发送窗口表示:在没有收到B 的确认的情况下, A可以连续把窗口内的数据都发送出去。凡是己经发送过的数据,在未收到确认之前都必须暂时保留,以便在超时重传时使用。
发送窗口后沿的后面部分表示己发送且己收到了确认。这些数据显然不需要再保留了。而发送窗口前沿的前面部分表示不允许发送的,因为接收方都没有为这部分数据保留临时存放的缓存空间。
现在假定A 发送了序号为31 ~ 41 的数据。这时发送窗口位置并未改变,但发送窗口内靠后面有11个字节(灰色小方框表示)表示己发送但未收到确认。而发送窗口内靠前面的9 个字节( 42 ~ 50 )是允许发送但尚未发送的。】
再看一下B 的接收窗口。B 的接收窗口大小是20,在接收窗口外面,到30 号为止的数据是已经发送过确认,并且己经交付给主机了。因此在B 可以不再保留这些数据。接收窗口内的序号(31~50)足允许接收的。B 收到了序号为32 和33 的数据,这些数据没有按序到达,因为序号为31 的数据没有收到(也许丢失了,也许滞留在网络中的某处)。 请注意, B 只能对按序收到的数据中的最高序号给出确认,因此B 发送的确认报文段中的确认号仍然是31 (即期望收到的序号)。
现在假定B 收到了序号为31 的数据,并把序号为31~33的数据交付给主机,然后B删除这些数据。接着把接收窗口向前移动3个序号,同时给A 发送确认,其中窗口值仍为20,但确认号是34,这表明B 已经收到了到序号33 为止的数据。我们注意到,B还收到了序号为37, 38 和40 的数据,但这些都没有按序到达,只能先存在接收窗口。A收到B的确认后,就可以把发送窗口向前滑动3个序号,指针P2 不动。可以看出,现在A 的可用窗口增大了,可发送的序号范围是42~53。整个过程如下图:
A 在继续发送完序号42-53的数据后,指针P2向前移动和P3重合。发送窗口内的序号都已用完,但还没有再收到确认。由于A 的发送窗口己满,可用窗口己减小到0,因此必须停止发送。
上面已经讲到, TCP 的发送方在规定的时间内没有收到确认就要重传已发送的报文段。这种重传的概念是很简单的,但重传时间的选择却是TCP 最复杂的问题之一。
TCP采用了一种自适应算法 ,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间RTT,TCP 保留了RTT的一个加权平均往返时间RTTs (这又称为平滑的往返时间, S 表示Smoothed 。因为进行的是加权平均,因此得出的结果更加平滑)。每当第一次测量到RTT样本时, RTTs值就取为所测量到的RTT样本值。但以后每测量到一个新的RTT样本,就按下式重新计算一次RTTs:
新的RTTs = (1 - α)×(旧的RTTs) + α ×(新的RTT样本)
α 越大表示新的RTTs受新的RTT样本的影响越大。推荐的α 值为0.125,用这种方法得出的加权平均往返时间RTTs 就比测量出的RTT值更加平滑。
显然,超时计时器设置的超时重传时间RTO (RetransmissionTime-Out)应略大于上面得出的加权平均往返时间RTTs。RFC 2988 建议使用下式计算RTO:
RTO = RTTs + 4 × RTTd
RTTd是RTT 的偏差的加权平均值,它与RTTs和新的RTT样本之差有关。计算公式如下:
新的RTTd= (1- β)×(旧的RTTd) + β × |RTTs-新的RTT样本|
发现问题: 如图所示,发送出一个报文段。设定的重传时间到了,还没有收到确认。于是重
传报文段。经过了一段时间后,收到了确认报文段。现在的问题是:如何判定此确认报文段是对先发送的报文段的确认,还是对后来重传的报文段的确认?
若收到的确认是对重传报文段的确认,但却被源主机当成是对原来的报文段的确认,则这样计算出的RTTs 和超时重传时间RTO 就会偏大。若后面再发送的报文段又是经过重传后才收到确认报文段,则按此方法得出的超时重传时间RTO 就越来越长。
若收到的确认是对原来的报文段的确认,但被当成是对重传报文段的确认,则由此计算出的RTTs 和RTO 都会偏小。这就必然导致报文段过多地重传。这样就有可能使RTO 越来越短。
Kam 提出了一个算法:在计算加权平均RTTs 时,只要报文段重传了就不采用其往返时间样本。这样得出的加权平均RTTs 和RTO 就较准确。
新问题: 设想出现这样的情况:报文段的时延突然增大了很多。因此在原来得出的重传时间内,不会收到确认报文段。于是就重传报文段。但根据Kam 算法,不考虑重传的报文段的往返时间样本。这样,超时重传时间就无法更新。
解决方案: 对Kam 算法进行修正,方法是z报文段每重传一次,就把超时重传时间RTO 增大一些。典型的做法是取新的重传时间为2 倍的旧的重传时间。当不再发生报文段的重传时,才根据上面给出的公式计算超时重传时间。
流量控制(flow control)就是让发送方的发送速率不要太快,要让接收方来得及接收。
利用滑动窗口机制可以很方便地在TCP 连接上实现对发送方的流量控制。
接收方的主机B 进行了三次流量控制。第一次把窗口减小到rwnd =300,第二次又减到rwnd = 100 ,最后减到rwnd = 0 ,即不允许发送方再发送数据了。这种使发送方暂停发送的状态将持续到主机B 重新发出一个新的窗口值为止。我们还应注意到,B 向A 发送的三个报文段都设置了ACK=1,只有在ACK=1 时确认号字段才有意义。
发生死锁: 现在我们考虑一种情况。上图中, B 向A 发送了零窗口的报文段后不久, B 的接收缓存又有了一些存储空间。于是B 向A 发送了rwnd = 400 的报文段。然而这个报文段在传送过程中丢失了。A 一直等待收到B 发送的非零窗口的通知,而B 也一直等待A 发送的数据。如果没有其他措施,这种互相等待的死锁局面将一直延续下去。
解决方案: TCP 为每一个连接设有一个 持续计时器(persistence timer) 。只要TCP 连接的一方收到对方的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,就发送一个 零窗口探测报文段 (仅携带1 宇节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。
1 TCP连接时是三次握手,那么两次握手可行吗?
在《计算机网络》中是这样解释的:已失效的连接请求报文段”的产生在这样一种情况下:client发出的第一个连接请求报文段并没有丢失,而是在某个网络结点长时间的滞留了,以致延误到连接释放以后的某个时间才到达server。本来这是一个早已失效的报文段。但server收到此失效的连接请求报文段后,就误认为是client再次发出的一个新的连接请求。于是就向client发出确认报文段,同意建立连接。假设不采用“三次握手”,那么只要server发出确认,新的连接就建立了。由于现在client并没有发出建立连接的请求,因此不会理睬server的确认,也不会向server发送ACK包。这样就会白白浪费资源。而经过三次握手,客户端和服务器都有应有答,这样可以确保TCP正确连接。
2 为什么TCP连接是三次,挥手确是四次?
在TCP连接中,服务器端的SYN和ACK向客户端发送是一次性发送的,而在断开连接的过程中,B端向A端发送的ACK和FIN是是分两次发送的。因为在B端接收到A端的FIN后,B端可能还有数据要传输,所以先发送ACK,等B端处理完自己的事情后就可以发送FIN断开连接了。
3 为什么在第四次挥手后会有2个MSL的延时?
MSL是Maximum Segment Lifetime,最大报文段生存时间,2个MSL是报文段发送和接收的最长时间。假定网络不可靠,那么第四次发送的ACK可能丢失,即B端无法收到这个ACK,如果B端收不到这个确认ACK,B端会定时向A端重复发送FIN,直到B端收到A的确认ACK。所以这个2MSL就是用来处理这个可能丢失的ACK的。
1 文件传送协议
文件传送协议FTP (File Transfer Protocol) [RFC 959]是因特网上使用得最广泛的文件传送协议,底层采用TCP协议。
盯P 使用客户服务器方式。一个FTP 服务器进程可同时为多个客户进程提供服务。FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求:另外有若干个从属进程,负责处理单个请求。
在进行文件传输时,客户和服务器之间要建立两个并行的TCP 连接:“控制连接”(21端口)和“数据连接”(22端口)。控制连接在整个会话期间一直保持打开, FTP 客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。
2 简单文件传送协议TFTP
TCP/IP 协议族中还有一个简单文件传送协议TFfP (Trivial File Transfer Protocol),它是一个很小且易于实现的文件传送协议,端口号69。
TFfP 也使用客户服务器方式,但它使用UDP 数据报,因此TFfP 需要有自己的差错改正措施。TFfP 只支持文件传输而不支持交耳。
3 TELNET
TELNET 是一个简单的远程终端协议,底层采用TCP协议。TELNET 也使用客户服务器方式。在本地系统运行TELNET 客户进程,而在远地主机则运行TELNET 服务器进程,占用端口23。
4 邮件传输协议
一个电子邮件系统应具如图所示的三个主要组成构件,这就是用户代理、邮件服务器,以及邮件发送协议(如SMTP )和邮件读取协议(如POP3), POP3 是邮局协议(Post Office Protocol)的版本3 。
SMTP 和POP3 (或IMAP )都是在TCP 连接的上面传送邮件,使用TCP 的目的是为了使邮件的传送成为可靠的。
⑶ 计算机里面什么是报文
你好,很高兴为你解答:
报文是网络中交换与传输的数据单元,即站点一次性要发送的数据块。报文包含了将要发送的完整的数据信息,其长短很不一致,长度不限且可变。
(3)计算机网络报文和报文段扩展阅读
原理
当一个站点要发送报文时,它将一个目的地址附加到报文上,网络节点根据报文上的目的地址信息,把报文发送到下一个节点,一直逐个节点地转送到目的节点。每个节点在收到整个报文并检查无误后,就暂存这个报文,然后利用路由信息找出下一个节点的地址,再把整个报文传送给下一个节点。
特点
(1)报文从源点传送到目的地采用“存储转发”方式,在传送报文时,一个时刻仅占用一段通道。
(2)在交换节点中需要缓冲存储,报文需要排队,故报文交换不能满足实时通信的要求。
⑷ 甯с佹姤鏂囥佹姤鏂囨点佸垎缁勚佸寘銆佹暟鎹鎶ユ傚康鍖哄垎
搴旂敤灞傗斺斺旀秷鎭
浼犺緭灞傗斺斺旀暟鎹娈碉纸segment锛
缃戠粶灞傗斺斺斿垎缁勚佹暟鎹鍖咃纸packet锛
阈捐矾灞傗斺斺斿抚
鐗╃悊灞傗斺斺摈DU锛坆it姣旂壒锛
鎶ユ枃鏄缃戠粶涓浜ゆ崲鍜屼紶杈撶殑鏁版嵁鍗曞厓锛屼篃鏄缃戠粶浼犺緭镄勫崟鍏冦傛姤鏂囧寘钖浜嗗皢瑕佸彂阃佺殑瀹屾暣镄勬暟鎹淇℃伅锛屽叾闀跨煭涓嶉渶涓镊淬傛姤鏂囧湪浼犺緭杩囩▼涓浼氢笉鏂鍦板皝瑁呮垚鍒嗙粍銆佸寘銆佸抚𨱒ヤ紶杈掳纴灏佽呯殑鏂瑰纺灏辨槸娣诲姞涓浜涙带鍒朵俊鎭缁勬垚镄勯栭儴锛岄偅灏辨槸鎶ユ枃澶淬
鍒嗙粍鏄鍦ㄧ绣缁滀腑浼犺緭镄勪簩杩涘埗镙煎纺镄勫崟鍏冦傜敤鎴峰彂阃佺殑鏁版嵁浼氲鍒嗘垚澶氢釜镟村皬镄勯儴鍒嗭纴鍦ㄦ疮涓閮ㄥ垎镄勫墠闱㈠姞涓娄竴浜涘繀瑕佺殑鎺у埗淇℃伅缁勬垚镄勯栭儴锛屾湁镞朵篃浼氩姞涓婂熬閮锛屽氨鏋勬垚浜嗕竴涓鍒嗙粍銆
鏁版嵁鍖呮槸tcp/ip鍗忚阃氢俊浼犺緭涓镄勬暟鎹鍗曞厓锛屼篃绉颁负鍖呫傛暟鎹鍖呮槸浠庢渶涓婂眰锛屼竴灞备竴灞傚皝瑁咃纴鐭ラ亾缃戠粶灞傜殑锛屾渶钖庡熷姪鏁版嵁阈捐矾灞傚彂阃佸嚭铡荤殑鏁版嵁鍗曞厓銆
闱㈠悜镞犺繛鎺ワ纸UDP锛夌殑鏁版嵁浼犺緭锛屽伐浣滆繃绋嬬被浼间簬鎶ユ枃浜ゆ崲銆傞噰鐢ㄦ暟鎹鎶ユ柟寮忎紶杈撴椂锛岃浼犺緭镄勫垎缁勭О涓烘暟鎹鎶ャ
甯ф槸鏁版嵁阈捐矾灞傜殑浼犺緭鍗曞厓銆傚皢涓婂眰浼犺緭镄勬暟鎹娣诲姞涓涓澶撮儴鍜屽熬閮锛岀粍鎴愪简甯с
⑸ 计算机网络知识点
一、计算机网络概述
1.1 计算机网络的分类
按照网络的作用范围:广域网(WAN)、城域网(MAN)、局域网(LAN);
按照网络使用者:公用网络、专用网络。
1.2 计算机网络的层次结构
TCP/IP四层模型与OSI体系结构对比:
1.3 层次结构设计的基本原则
各层之间是相互独立的;
每一层需要有足够的灵活性;
各层之间完全解耦。
1.4 计算机网络的性能指标
速率:bps=bit/s 时延:发送时延、传播时延、排队时延、处理时延 往返时间RTT:数据报文在端到端通信中的来回一次的时间。
二、物理层
物理层的作用:连接不同的物理设备,传输比特流。该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。
物理层设备:
中继器【Repeater,也叫放大器】:同一局域网的再生信号;两端口的网段必须同一协议;5-4-3规程:10BASE-5以太网中,最多串联4个中继器,5段中只能有3个连接主机;
集线器:同一局域网的再生、放大信号(多端口的中继器);半双工,不能隔离冲突域也不能隔离广播域。
信道的基本概念:信道是往一个方向传输信息的媒体,一条通信电路包含一个发送信道和一个接受信道。
单工通信信道:只能一个方向通信,没有反方向反馈的信道;
半双工通信信道:双方都可以发送和接受信息,但不能同时发送也不能同时接收;
全双工通信信道:双方都可以同时发送和接收。
三、数据链路层
3.1 数据链路层概述
数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。数据链路层在不可靠的物理介质上提供可靠的传输。
该层的作用包括: 物理地址寻址、数据的成帧、流量控制、数据的检错、重发 等。
有关数据链路层的重要知识点:
数据链路层为网络层提供可靠的数据传输;
基本数据单位为帧;
主要的协议:以太网协议;
两个重要设备名称:网桥和交换机。
封装成帧:“帧”是 数据链路层 数据的基本单位:
透明传输:“透明”是指即使控制字符在帧数据中,但是要当做不存在去处理。即在控制字符前加上转义字符ESC。
3.2 数据链路层的差错监测
差错检测:奇偶校验码、循环冗余校验码CRC
奇偶校验码–局限性:当出错两位时,检测不到错误。
循环冗余检验码:根据传输或保存的数据而产生固定位数校验码。
3.3 最大传输单元MTU
最大传输单元MTU(Maximum Transmission Unit),数据链路层的数据帧不是无限大的,数据帧长度受MTU限制.
路径MTU:由链路中MTU的最小值决定。
3.4 以太网协议详解
MAC地址:每一个设备都拥有唯一的MAC地址,共48位,使用十六进制表示。
以太网协议:是一种使用广泛的局域网技术,是一种应用于数据链路层的协议,使用以太网可以完成相邻设备的数据帧传输:
局域网分类:
Ethernet以太网IEEE802.3:
以太网第一个广泛部署的高速局域网
以太网数据速率快
以太网硬件价格便宜,网络造价成本低
以太网帧结构:
类型:标识上层协议(2字节)
目的地址和源地址:MAC地址(每个6字节)
数据:封装的上层协议的分组(46~1500字节)
CRC:循环冗余码(4字节)
以太网最短帧:以太网帧最短64字节;以太网帧除了数据部分18字节;数据最短46字节;
MAC地址(物理地址、局域网地址)
MAC地址长度为6字节,48位;
MAC地址具有唯一性,每个网络适配器对应一个MAC地址;
通常采用十六进制表示法,每个字节表示一个十六进制数,用 - 或 : 连接起来;
MAC广播地址:FF-FF-FF-FF-FF-FF。
四、网络层
网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。数据交换技术是报文交换(基本上被分组所替代):采用储存转发方式,数据交换单位是报文。
网络层中涉及众多的协议,其中包括最重要的协议,也是TCP/IP的核心协议——IP协议。IP协议非常简单,仅仅提供不可靠、无连接的传送服务。IP协议的主要功能有:无连接数据报传输、数据报路由选择和差错控制。
与IP协议配套使用实现其功能的还有地址解析协议ARP、逆地址解析协议RARP、因特网报文协议ICMP、因特网组管理协议IGMP。具体的协议我们会在接下来的部分进行总结,有关网络层的重点为:
1、网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;
2、基本数据单位为IP数据报;
3、包含的主要协议:
IP协议(Internet Protocol,因特网互联协议);
ICMP协议(Internet Control Message Protocol,因特网控制报文协议);
ARP协议(Address Resolution Protocol,地址解析协议);
RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。
4、重要的设备:路由器。
路由器相关协议
4.1 IP协议详解
IP网际协议是 Internet 网络层最核心的协议。虚拟互联网络的产生:实际的计算机网络错综复杂;物理设备通过使用IP协议,屏蔽了物理网络之间的差异;当网络中主机使用IP协议连接时,无需关注网络细节,于是形成了虚拟网络。
IP协议使得复杂的实际网络变为一个虚拟互联的网络;并且解决了在虚拟网络中数据报传输路径的问题。
其中,版本指IP协议的版本,占4位,如IPv4和IPv6;首部位长度表示IP首部长度,占4位,最大数值位15;总长度表示IP数据报总长度,占16位,最大数值位65535;TTL表示IP数据报文在网络中的寿命,占8位;协议表明IP数据所携带的具体数据是什么协议的,如TCP、UDP。
4.2 IP协议的转发流程
4.3 IP地址的子网划分
A类(8网络号+24主机号)、B类(16网络号+16主机号)、C类(24网络号+8主机号)可以用于标识网络中的主机或路由器,D类地址作为组广播地址,E类是地址保留。
4.4 网络地址转换NAT技术
用于多个主机通过一个公有IP访问访问互联网的私有网络中,减缓了IP地址的消耗,但是增加了网络通信的复杂度。
NAT 工作原理:
从内网出去的IP数据报,将其IP地址替换为NAT服务器拥有的合法的公共IP地址,并将替换关系记录到NAT转换表中;
从公共互联网返回的IP数据报,依据其目的的IP地址检索NAT转换表,并利用检索到的内部私有IP地址替换目的IP地址,然后将IP数据报转发到内部网络。
4.5 ARP协议与RARP协议
地址解析协议 ARP(Address Resolution Protocol):为网卡(网络适配器)的IP地址到对应的硬件地址提供动态映射。可以把网络层32位地址转化为数据链路层MAC48位地址。
ARP 是即插即用的,一个ARP表是自动建立的,不需要系统管理员来配置。
RARP(Reverse Address Resolution Protocol)协议指逆地址解析协议,可以把数据链路层MAC48位地址转化为网络层32位地址。
4.6 ICMP协议详解
网际控制报文协议(Internet Control Message Protocol),可以报告错误信息或者异常情况,ICMP报文封装在IP数据报当中。
ICMP协议的应用:
Ping应用:网络故障的排查;
Traceroute应用:可以探测IP数据报在网络中走过的路径。
4.7网络层的路由概述
关于路由算法的要求:正确的完整的、在计算上应该尽可能是简单的、可以适应网络中的变化、稳定的公平的。
自治系统AS: 指处于一个管理机构下的网络设备群,AS内部网络自治管理,对外提供一个或多个出入口,其中自治系统内部的路由协议为内部网关协议,如RIP、OSPF等;自治系统外部的路由协议为外部网关协议,如BGP。
静态路由: 人工配置,难度和复杂度高;
动态路由:
链路状态路由选择算法LS:向所有隔壁路由发送信息收敛快;全局式路由选择算法,每个路由器计算路由时,需构建整个网络拓扑图;利用Dijkstra算法求源端到目的端网络的最短路径;Dijkstra(迪杰斯特拉)算法
距离-向量路由选择算法DV:向所有隔壁路由发送信息收敛慢、会存在回路;基础是Bellman-Ford方程(简称B-F方程);
4.8 内部网关路由协议之RIP协议
路由信息协议 RIP(Routing Information Protocol)【应用层】,基于距离-向量的路由选择算法,较小的AS(自治系统),适合小型网络;RIP报文,封装进UDP数据报。
RIP协议特性:
RIP在度量路径时采用的是跳数(每个路由器维护自身到其他每个路由器的距离记录);
RIP的费用定义在源路由器和目的子网之间;
RIP被限制的网络直径不超过15跳;
和隔壁交换所有的信息,30主动一次(广播)。
4.9 内部网关路由协议之OSPF协议
开放最短路径优先协议 OSPF(Open Shortest Path First)【网络层】,基于链路状态的路由选择算法(即Dijkstra算法),较大规模的AS ,适合大型网络,直接封装在IP数据报传输。
OSPF协议优点:
安全;
支持多条相同费用路径;
支持区别化费用度量;
支持单播路由和多播路由;
分层路由。
RIP与OSPF的对比(路由算法决定其性质):
4.10外部网关路由协议之BGP协议
BGP(Border Gateway Protocol)边际网关协议【应用层】:是运行在AS之间的一种协议,寻找一条好路由:首次交换全部信息,以后只交换变化的部分,BGP封装进TCP报文段.
五、传输层
第一个端到端,即主机到主机的层次。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。
传输层的任务是根据通信子网的特性,最佳的利用网络资源,为两个端系统的会话层之间,提供建立、维护和取消传输连接的功能,负责端到端的可靠数据传输。在这一层,信息传送的协议数据单元称为段或报文。
网络层只是根据网络地址将源结点发出的数据包传送到目的结点,而传输层则负责将数据可靠地传送到相应的端口。
有关网络层的重点:
传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;
包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议);
重要设备:网关。
5.1 UDP协议详解
UDP(User Datagram Protocol: 用户数据报协议),是一个非常简单的协议。
UDP协议的特点:
UDP是无连接协议;
UDP不能保证可靠的交付数据;
UDP是面向报文传输的;
UDP没有拥塞控制;
UDP首部开销很小。
UDP数据报结构:
首部:8B,四字段/2B【源端口 | 目的端口 | UDP长度 | 校验和】 数据字段:应用数据
5.2 TCP协议详解
TCP(Transmission Control Protocol: 传输控制协议),是计算机网络中非常复杂的一个协议。
TCP协议的功能:
对应用层报文进行分段和重组;
面向应用层实现复用与分解;
实现端到端的流量控制;
拥塞控制;
传输层寻址;
对收到的报文进行差错检测(首部和数据部分都检错);
实现进程间的端到端可靠数据传输控制。
TCP协议的特点:
TCP是面向连接的协议;
TCP是面向字节流的协议;
TCP的一个连接有两端,即点对点通信;
TCP提供可靠的传输服务;
TCP协议提供全双工通信(每条TCP连接只能一对一);
5.2.1 TCP报文段结构:
最大报文段长度:报文段中封装的应用层数据的最大长度。
TCP首部:
序号字段:TCP的序号是对每个应用层数据的每个字节进行编号
确认序号字段:期望从对方接收数据的字节序号,即该序号对应的字节尚未收到。用ack_seq标识;
TCP段的首部长度最短是20B ,最长为60字节。但是长度必须为4B的整数倍
TCP标记的作用:
5.3 可靠传输的基本原理
基本原理:
不可靠传输信道在数据传输中可能发生的情况:比特差错、乱序、重传、丢失
基于不可靠信道实现可靠数据传输采取的措施:
差错检测:利用编码实现数据包传输过程中的比特差错检测 确认:接收方向发送方反馈接收状态 重传:发送方重新发送接收方没有正确接收的数据 序号:确保数据按序提交 计时器:解决数据丢失问题;
停止等待协议:是最简单的可靠传输协议,但是该协议对信道的利用率不高。
连续ARQ(Automatic Repeat reQuest:自动重传请求)协议:滑动窗口+累计确认,大幅提高了信道的利用率。
5.3.1TCP协议的可靠传输
基于连续ARQ协议,在某些情况下,重传的效率并不高,会重复传输部分已经成功接收的字节。
5.3.2 TCP协议的流量控制
流量控制:让发送方发送速率不要太快,TCP协议使用滑动窗口实现流量控制。
5.4 TCP协议的拥塞控制
拥塞控制与流量控制的区别:流量控制考虑点对点的通信量的控制,而拥塞控制考虑整个网络,是全局性的考虑。拥塞控制的方法:慢启动算法+拥塞避免算法。
慢开始和拥塞避免:
【慢开始】拥塞窗口从1指数增长;
到达阈值时进入【拥塞避免】,变成+1增长;
【超时】,阈值变为当前cwnd的一半(不能<2);
再从【慢开始】,拥塞窗口从1指数增长。
快重传和快恢复:
发送方连续收到3个冗余ACK,执行【快重传】,不必等计时器超时;
执行【快恢复】,阈值变为当前cwnd的一半(不能<2),并从此新的ssthresh点进入【拥塞避免】。
5.5 TCP连接的三次握手(重要)
TCP三次握手使用指令:
面试常客:为什么需要三次握手?
第一次握手:客户发送请求,此时服务器知道客户能发;
第二次握手:服务器发送确认,此时客户知道服务器能发能收;
第三次握手:客户发送确认,此时服务器知道客户能收。
建立连接(三次握手):
第一次: 客户向服务器发送连接请求段,建立连接请求控制段(SYN=1),表示传输的报文段的第一个数据字节的序列号是x,此序列号代表整个报文段的序号(seq=x);客户端进入 SYN_SEND (同步发送状态);
第二次: 服务器发回确认报文段,同意建立新连接的确认段(SYN=1),确认序号字段有效(ACK=1),服务器告诉客户端报文段序号是y(seq=y),表示服务器已经收到客户端序号为x的报文段,准备接受客户端序列号为x+1的报文段(ack_seq=x+1);服务器由LISTEN进入SYN_RCVD (同步收到状态);
第三次: 客户对服务器的同一连接进行确认.确认序号字段有效(ACK=1),客户此次的报文段的序列号是x+1(seq=x+1),客户期望接受服务器序列号为y+1的报文段(ack_seq=y+1);当客户发送ack时,客户端进入ESTABLISHED 状态;当服务收到客户发送的ack后,也进入ESTABLISHED状态;第三次握手可携带数据;
5.6 TCP连接的四次挥手(重要)
释放连接(四次挥手)
第一次: 客户向服务器发送释放连接报文段,发送端数据发送完毕,请求释放连接(FIN=1),传输的第一个数据字节的序号是x(seq=x);客户端状态由ESTABLISHED进入FIN_WAIT_1(终止等待1状态);
第二次: 服务器向客户发送确认段,确认字号段有效(ACK=1),服务器传输的数据序号是y(seq=y),服务器期望接收客户数据序号为x+1(ack_seq=x+1);服务器状态由ESTABLISHED进入CLOSE_WAIT(关闭等待);客户端收到ACK段后,由FIN_WAIT_1进入FIN_WAIT_2;
第三次: 服务器向客户发送释放连接报文段,请求释放连接(FIN=1),确认字号段有效(ACK=1),表示服务器期望接收客户数据序号为x+1(ack_seq=x+1);表示自己传输的第一个字节序号是y+1(seq=y+1);服务器状态由CLOSE_WAIT 进入 LAST_ACK (最后确认状态);
第四次: 客户向服务器发送确认段,确认字号段有效(ACK=1),表示客户传输的数据序号是x+1(seq=x+1),表示客户期望接收服务器数据序号为y+1+1(ack_seq=y+1+1);客户端状态由FIN_WAIT_2进入TIME_WAIT,等待2MSL时间,进入CLOSED状态;服务器在收到最后一次ACK后,由LAST_ACK进入CLOSED;
为什么需要等待2MSL?
最后一个报文没有确认;
确保发送方的ACK可以到达接收方;
2MSL时间内没有收到,则接收方会重发;
确保当前连接的所有报文都已经过期。
六、应用层
为操作系统或网络应用程序提供访问网络服务的接口。应用层重点:
数据传输基本单位为报文;
包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。
6.1 DNS详解
DNS(Domain Name System:域名系统)【C/S,UDP,端口53】:解决IP地址复杂难以记忆的问题,存储并完成自己所管辖范围内主机的 域名 到 IP 地址的映射。
域名解析的顺序:
【1】浏览器缓存,
【2】找本机的hosts文件,
【3】路由缓存,
【4】找DNS服务器(本地域名、顶级域名、根域名)->迭代解析、递归查询。
IP—>DNS服务—>便于记忆的域名
域名由点、字母和数字组成,分为顶级域(com,cn,net,gov,org)、二级域(,taobao,qq,alibaba)、三级域(www)(12-2-0852)
6.2 DHCP协议详解
DHCP(Dynamic Configuration Protocol:动态主机设置协议):是一个局域网协议,是应用UDP协议的应用层协议。作用:为临时接入局域网的用户自动分配IP地址。
6.3 HTTP协议详解
文件传输协议(FTP):控制连接(端口21):传输控制信息(连接、传输请求),以7位ASCII码的格式。整个会话期间一直打开。
HTTP(HyperText Transfer Protocol:超文本传输协议)【TCP,端口80】:是可靠的数据传输协议,浏览器向服务器发收报文前,先建立TCP连接,HTTP使用TCP连接方式(HTTP自身无连接)。
HTTP请求报文方式:
GET:请求指定的页面信息,并返回实体主体;
POST:向指定资源提交数据进行处理请求;
DELETE:请求服务器删除指定的页面;
HEAD:请求读取URL标识的信息的首部,只返回报文头;
OPETION:请求一些选项的信息;
PUT:在指明的URL下存储一个文档。
6.3.1 HTTP工作的结构
6.3.2 HTTPS协议详解
HTTPS(Secure)是安全的HTTP协议,端口号443。基于HTTP协议,通过SSL或TLS提供加密处理数据、验证对方身份以及数据完整性保护
原文地址:https://blog.csdn.net/Royalic/article/details/119985591