Skip to content

Commit a199339

Browse files
committed
tcp-ip错误纠正
1 parent 4c933d5 commit a199339

File tree

1 file changed

+17
-19
lines changed

1 file changed

+17
-19
lines changed

computer-networks/tcpip.md

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含
1414

1515

1616

17-
17+
1818

1919

2020
TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp,等等我们熟悉的协议。而第二层则是传输层,著名的TCP和UDP协议就在这个层次。第三层是网络层,IP协议就在这里,它负责对数据加上IP地址和其他的数据以确定传输的目标。第四层是数据链路层,这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。
@@ -27,7 +27,7 @@ TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用
2727

2828

2929

30-
30+
3131

3232

3333
上图清楚地表示了TCP/IP协议中每个层的作用,而TCP/IP协议通信的过程其实就对应着数据入栈与出栈的过程。入栈的过程,数据发送方每层不断地封装首部与尾部,添加一些传输的信息,确保能传输到目的地。出栈的过程,数据接收方每层不断地拆除首部与尾部,得到最终传输的数据。
@@ -40,7 +40,7 @@ TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用
4040

4141

4242

43-
43+
4444

4545

4646
上图以HTTP协议为例,具体说明。
@@ -66,7 +66,7 @@ TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用
6666

6767
#### 1.IP协议
6868

69-
IP协议是TCP/IP协议的核心,所有的TCP,UDP,IMCP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议:TCP或UDP要做的事情。
69+
IP协议是TCP/IP协议的核心,所有的TCP,UDP,ICMP,IGCP的数据都以IP数据格式传输。要注意的是,IP不是可靠的协议,这是说,IP协议没有提供一种数据未传达以后的处理机制,这被认为是上层协议:TCP或UDP要做的事情。
7070

7171
##### 1.1 IP地址
7272

@@ -85,7 +85,7 @@ C类IP地址:192.0.0.0~223.255.255.255
8585

8686

8787

88-
88+
8989

9090

9191
这里只介绍:八位的TTL字段。这个字段规定该数据包在穿过多少个路由之后才会被抛弃。某个IP数据包每穿过一个路由器,该数据包的TTL数值就会减少1,当该数据包的TTL成为零,它就会被自动抛弃。
@@ -123,7 +123,7 @@ ping可以说是ICMP的最著名的应用,是TCP/IP协议的一部分。利用
123123

124124

125125

126-
126+
127127

128128

129129
ping这个单词源自声纳定位,而这个程序的作用也确实如此,它利用ICMP协议包来侦测另一个主机是否可达。原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应。
@@ -202,11 +202,11 @@ TCP是面向连接的,无论哪一方向另一方发送数据之前,都必
202202

203203

204204

205-
**第一次握手**建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN\_SEND状态,等待服务器的确认;
205+
**第一次握手:** 建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN\_SEND状态,等待服务器的确认;
206206

207-
**第二次握手**服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1\(Sequence Number+1\);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN\_RECV状态;
207+
**第二次握手:** 服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1\(Sequence Number+1\);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN\_RECV状态;
208208

209-
**第三次握手**客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
209+
**第三次握手:** 客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。
210210

211211
##### 为什么要三次握手?
212212

@@ -224,18 +224,16 @@ TCP是面向连接的,无论哪一方向另一方发送数据之前,都必
224224

225225

226226

227-
228227

229228

230-
**第一次分手:**
231229

232-
主机1(可以使客户端,也可以是服务器端),设置Sequence Number,向主机2发送一个FIN报文段;此时,主机1进入FIN\_WAIT\_1状态;这表示主机1没有数据要发送给主机2了;
230+
**第一次分手:** 主机1(可以使客户端,也可以是服务器端),设置Sequence Number,向主机2发送一个FIN报文段;此时,主机1进入FIN\_WAIT\_1状态;这表示主机1没有数据要发送给主机2了;
233231

234-
**第二次分手**主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN\_WAIT\_2状态;主机2告诉主机1,我“同意”你的关闭请求;
232+
**第二次分手:** 主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN\_WAIT\_2状态;主机2告诉主机1,我“同意”你的关闭请求;
235233

236-
**第三次分手**主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST\_ACK状态;
234+
**第三次分手:** 主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST\_ACK状态;
237235

238-
**第四次分手**主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME\_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。
236+
**第四次分手** 主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME\_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。
239237

240238
##### 为什么要四次分手?
241239

@@ -269,7 +267,7 @@ MSL:报文段最大生存时间,它是任何报文段被丢弃前在网络
269267

270268

271269

272-
270+
273271

274272

275273
从图中可以看出,B进行了三次流量控制。第一次把窗口减少到 rwnd = 300 ,第二次又减到了 rwnd = 100 ,最后减到 rwnd = 0 ,即不允许发送方再发送数据了。这种使发送方暂停发送的状态将持续到主机B重新发出一个新的窗口值为止。B向A发送的三个报文段都设置了 ACK = 1 ,只有在ACK=1时确认号字段才有意义。
@@ -297,7 +295,7 @@ TCP为每一个连接设有一个持续计时器\(persistence timer\)。只要TC
297295

298296

299297

300-
298+
301299

302300

303301
每经过一个传输轮次,拥塞窗口 cwnd 就加倍。
@@ -356,7 +354,7 @@ TCP为每一个连接设有一个持续计时器\(persistence timer\)。只要TC
356354

357355

358356

359-
357+
360358

361359

362360
接收方收到了M1和M2后都分别发出了确认。现在假定接收方没有收到M3但接着收到了M4。
@@ -376,7 +374,7 @@ TCP为每一个连接设有一个持续计时器\(persistence timer\)。只要TC
376374
* 当发送方连续收到三个重复确认,就执行“乘法减小”算法,把慢开始门限ssthresh减半。
377375
* 与慢开始不同之处是现在不执行慢开始算法(即拥塞窗口cwnd现在不设置为1),而是把cwnd值设置为 慢开始门限ssthresh减半后的数值,然后开始执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢地线性增大。
378376

379-
377+
380378
![](http://upload-images.jianshu.io/upload_images/3985563-8e0bf3c2c9554f5d.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
381379

382380

0 commit comments

Comments
 (0)