认识TCP/IP

在谈TCP/IP之前,首先得谈谈服务器和客户端的概念。

服务器和客户端

客户端可以理解为你电脑上的进程

服务器可以理解为提供服务的设备

通俗点讲,就拿访问浏览器来说,浏览器可以看成是一个客户端,当你在访问某个网址时,给你提供你访问网站内容的计算机就可以称为服务器。我的理解是,服务器和客户端可以看成是两台计算机。它们之间能够进行通信,那么它们之间就肯定存在着某种方式进行沟通,就像人与人之间进行沟通一样。

举个例子:

你和我都说汉语,所以,当我说"苹果"这个词的时候,你就会想到一种水果,或者想到一个手机品牌,

但是当我对一个美国人说"苹果"两个字时,他可能并不能理解我在说什么,因为他可能听不懂汉语,

如果我想要对他表达"苹果"这个词,我需要说"Apple",他才会明白我说的是什么,当我跟你聊天时,我们都说汉语,

当两个美国人聊天时,他们都说英语,这样,才能有效的沟通,总之,如果想要能够顺畅的沟通,

沟通双方都必须遵守相同的协议,我们可以把汉语理解成一种协议,把英语也理解成一种协议,

只要沟通双方都遵守相同的协议,双方就能够顺畅的沟通,只要沟通双方都遵守相同的协议,双方就能够理解对方想要做什么。

当然,之所以拿汉语、英语举例,是为了让初学者能够更加容易的理解"协议"这个词,但是请不要错误的以为"协议"就是"语言",

之所以拿语言举例,是为了方便理解,说白了,"协议"可以理解为某种规则或者某种约定,

只要大家都严格按照这种约定行事,世界就会正常的运转,比如"红灯停,绿灯行"也可以理解为一种协议,

比如在马路上都要靠右行驶(在中国),也是一种协议,比如在小饭馆,你给老板人民币,老板给你对应的餐食,

也是一种协议,"协议"的概念稍微有一些抽象,稍微有一些宽泛,此处大概有一个印象即可,在学习的过程中,我们自己就会慢慢的理解它了。\

TCP/IP协议:

tcp/ip协议其实是一个协议族,不是一个单独的协议,而是由很多个协议组成。

tcp/ip分层:

TCP3次握手:

第一次握手:建立连接,客户端将SYN标记为1,seq标记为x,并将SYN包发送到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到SYN,知道客户端要建立链接,同时向客户端也发送一个SYN包(SYN=1)和一个ACK包(ACK=1),随机产生一个数seq=y,ack=x+1(客户端的seq值x加1),来确认客户端的SYN,并进入SYN_RECV;

第三次握手:客户端收到服务器发来的SYN+ACK后,确认ack值,并回复服务器端一个ACK确认,发送完毕后,双方进入ESTABLISHED状态。

三次握手成功后,开始传输数据。

一个完整的三次握手也就是 请求---应答---再次确认。

通俗来讲就是:

A : 你好我是A,你能听得到我说话吗?

B : 听到了,我是B,你能听到我说话吗?

A : 可以,听到了

好建立连接,开始聊天!

4次挥手:

  1. 客户端进程发出连接释放报文,并且停止发送数据。释放数据报文首部,FIN=1,其序列号为seq=u(等于前面已经传送过来的数据的最后一个字节的序号加1),此时,客户端进入FIN-WAIT-1(终止等待1)状态。 TCP规定,FIN报文段即使不携带数据,也要消耗一个序号。
  2. 服务器收到连接释放报文,发出确认报文,ACK=1,ack=u+1,并且带上自己的序列号seq=v,此时,服务端就进入了CLOSE-WAIT(关闭等待)状态。TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。这个状态还要持续一段时间,也就是整个CLOSE-WAIT状态持续的时间。
  3. 客户端收到服务器的确认请求后,此时,客户端就进入FIN-WAIT-2(终止等待2)状态,等待服务器发送连接释放报文(在这之前还需要接受服务器发送的最后的数据)。
  4. 服务器将最后的数据发送完毕后,就向客户端发送连接释放报文,FIN=1,ack=u+1,由于在半关闭状态,服务器很可能又发送了一些数据,假定此时的序列号为seq=w,此时,服务器就进入了LAST-ACK(最后确认)状态,等待客户端的确认。
  5. 客户端收到服务器的连接释放报文后,必须发出确认,ACK=1,ack=w+1,而自己的序列号是seq=u+1,此时,客户端就进入了TIME-WAIT(时间等待)状态。注意此时TCP连接还没有释放,必须经过(最长报文段寿命)的时间后当客户端撤销相应的TCB后,才进入CLOSED状态。
  6. 服务器只要收到了客户端发出的确认,立即进入CLOSED状态。同样,撤销TCB后,就结束了这次的TCP连接。可以看到,服务器结束TCP连接的时间要比客户端早一些。

通俗讲就是:

A:“喂,我不说了。

B:“我知道了。等下,上一句还没说完。

B:”好了,说完了,我也不说了。

A:”我知道了。”

A等待2MSL,保证B收到了消息,否则重说一次”我知道了”

IP地址:

每一台计算机都有一个唯一的IP地址,就像每个人有唯一的身份证一样。

有了IP地址,才知道你要通信的设备是什么设备,就像你和某个人打交道,你知道他的身份证才知道这个人是谁。

未完待续……

猜你喜欢

转载自blog.csdn.net/qq_29694477/article/details/82799949