TCP IP协议

Posted jokidd

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP IP协议相关的知识,希望对你有一定的参考价值。

TCP/IP协议族

TCP/IP是internet最基本的协议,整个协议族是由很多个协议共同组成的。TCP协议负责数据的准确性和完整性,在发现传输数据过程中出现问题,可以要求重新传输,保证能够完整并正确的发送到目的地。IP则是给internet的每一台联网的设备规定一个IP协议地址。

TCP/IP协议族的分层

大体是分为4个层:应用层,传输层,网络层,链路层。在OSI标准中又被分为7层:应用层,表示层,会话层,传输层,网络层,数据链路层,物理层。本篇主要讲解的是4层的介绍。

下图是4层架构的示意图:

技术图片

应用层:我们常说的http协议是属于应用层的一个协议,应用层的协议还有FTP(File Transfer Protocol:文件传输协议),还有DNS(Domain Name System:域名解析系统)。 http协议是通过tcp/ip通信协议来传输数据的,由请求和响应构成,是一个典型的客户端模型。

传输层:tcp和udp协议主要在该层进行工作,应用层会将数据交付给该层进行数据传输。TCP(Transmission Control Protocol:传输控制协议)是点对点的、提供可靠的数据传输服务,相对于UDP来说开销大,传输速度较慢UDP(User Datagram Protocol:用户数据报协议)是一个简单的面向数据报的协议。是不可靠的数据传输,他只会把应用层的数据发送到指定的目的地,不关心目的地是否能收到数据,不保留数据备份

网络层:IP协议位于该层。该层负责在众多网络线路选择一条线路,一般是需要IP地址和MAC地址的支持。

链路层:用来处理网络连接的硬件设备,一般是指网卡之类的以及光纤电缆都属于改层的范畴。

借用<图鉴http>一图:

技术图片

TCP和UDP

UDP的优缺点。

优点:传输速度快。缺点:不可靠,不稳定。
之所以不可靠不稳定,是因为UDP是不需要建立连接就可以发送数据的,没有阻塞机制,宁愿丢失数据也不造成延迟。UDP支持一对一,多对多,一对多,多对一的通信。

TCP的优缺点。

优点:可靠稳定。
缺点:速度较慢。
TCP提供可靠的传输,不会丢包,不重复发送且按顺序。
TCP是点对点的连接,一个TCP连接只能连接两个端点。

两者的区别:UDP不建立连接,会丢包,会乱序。TCP会进行三次握手建立连接通信,不丢包,保证有序。

TCP的三次握手:

技术图片

一些关于信号标志和确认号的标注:

seq:本报文段数据的第一个字节的序号

ack:确认号——期望收到对方下个报文段的第一个数据字节的序号

SYN:请求同步标志——用于建立和释放连接,当SYN=1时,表示建立连接。

ACK:确认标志——仅当 ACK=1时确认号字段才有效。建立 TCP 连接后,所有报文段都必须把 ACK 字段置为 1。

FIN:结束标志——用于释放连接,当 FIN=1,表明发送方已经发送完毕,要求释放TCP连接。

流程:

1.第一次握手,客户端给服务端发送请求包SYN=1(seq=x),序号为seq=x。

2.第二次握手,服务端接收到请求包后,将客户端的请求包SYN=1放入到自己的未连接队列中,然后给客户端发送两个包:①发送ACK=1(ack=x+1)的确认信号;②询问请求连接请求SYN=1(seq=y)服务端的请求包,询问客户端是否准备好建立连接

3.第三次握手,客户端接收到服务端发来的请求包,同意建立连接,给服务端返回ACK=1(ack=y+1)。 至此,三次握手流程完毕,客户端与服务端建立起连接可以进行请求通讯了。

为什么需要三次握手?

三次握手可以确认一次点多点的连接。避免连接请求的数据包丢失,假设在连接中,客户端由于网络不稳定原因出现丢包,服务端可以通过seq=x这个序列号,能够确认客户端请求到第几个包,告知客户端从seq=x这个包发送给我,之前的不用发送了,服务端有记录了。

为什么不是两次或者四次呢?

两次显然不够,服务端给客户端回复了准备好了可以通信,如果客户端不回应,服务端是不知道客户端是否能收到,如果这时建立连接,服务端先发信息的话,那客户端都收不到信息了,会出现资源浪费这样的问题。

四次就造成浪费,因为三次已经能保证双方都能确认接收到信息,可以建立连接。


仅供自己学习参考,如有错误,欢迎指出






以上是关于TCP IP协议的主要内容,如果未能解决你的问题,请参考以下文章

TCP/IP协议

TCP/IP协议

七TCP/IP协议

什么是TCP/IP协议?

TCP/IP协议详解

TCP/IP协议是啥?