记录自已学习之TCP协议

TCP/IP协议是现在网络中用的最多的协议,可以保证底层的工作,具有许多的优点。TCP协议工作在传输层还有就是对上服务socket接口,对下调用IP层。TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。没有连接上是根本不会进行任何的通信的,想要连接上就需要三次握手,首先就是要服务器处于listen状态,客户端向服务器发送SYN报文进行connect,等待服务器返回SYN_ACK报文,再是客户端发送ACK报文,这样连接就建立了,中间只要有一个报文没有收到都算是没有连接上,都是需要重新再来的。还有就是他们在连接上了之后就需要通信了,无论是服务器还是客户端谁都发起通信,通信是双向的,TCP协议就连在通信的时候发报文都是需要校验的,而且接收方还需要给发送方一个确认的信号。需要校验的原因是因为害怕数据在传送的时候会被破坏,需要校验来防止数据被破坏,需要接收方确认是因为害怕数据没有真正的被接收方接收到,为了保证数据的可靠。并且在每一个分割的报文上都有编码,以防止顺序出错或者掉失数据。还有就是TCP协议有滑动窗口技术,自动可以根据速率来调节传送数据的速度还有大小。TCP协议在断开连接的时候是需要四次握手,无论是服务器还是客户端都可以发起断开,四次握手就是双方都要发送一个FIN报文,并且需要收到对方的ACK信号才算是断开连接。

1.TCP协议的学习
关于TCP理解的重点
(1)TCP协议工作在传输层,对上服务socket接口(网络编程的一些API,上面的应用程序都是调用API来工作的),对下调用IP层;
(2)TCP协议面向连接(也就是必须连接才能通信,没有连接上就不能通信了),通信前必须三次握手建立连接关系后才能开始通信;
(3)TCP协议(一对代码实现了一些结构,能保证可靠稳定的传输)提供可靠传输,不怕掉包、乱序等;

TCP如何保证可靠传输
(1)TCP在传输有效信息前要求通信双方必须先握手,建立连接才能通信;(想要通信必须建立起连接,这是保证稳定的前提)
(2)TCP的接收方收到数据包后会ack给发送方,若发送方未收到ack会掉包重传;(双方通信必须要有来有回,发一个需要对方确认才能发下一个)
(3)TCP的有效数据内容会附带校验(ecc数据就是校验数据),以防止内容在传递过程中损坏;(带有校验,以防文件被破坏)
(4)TCP会根据网络带宽来自动调节适配速率(滑动窗口技术);(通信速率由一秒发多少个包,还有就是一个包多少字节决定的)(滑动窗口技术,自动调节适配速率)
(5)发送方会给各分割报文编号,接收方会校验编码,一旦顺序错误即会重传;(报文编码,以防报文混乱)

协议栈就是别人写好的代码,实现功能,我们只需要调用就可以的;

2.TCP协议的学习
TCP的三次握手(内部自动的)
(1)建立连接需要三次握手(其实就是发送方和接收方之间进行三次握手,前提是服务器处在listen状态下,客户端主动发起连接connect);
(2)建立连接的条件:服务器listen时客户端主动发起connect;
三次握手:客户端主动发起一个SYN信号给服务器,当服务器收到客户端的SYN信号时会回复一个SYNACK信号,当客户端收到这个信号的时候会发送一个ACK信号给服务器,这样两边才建立起连接;
当客户端和服务器建立连接的时候是通过报文才能知道两个的状态,所以报文是很重要的。


关闭连接需要四次握手:就是客户端和服务器双方都要确认一下,无论谁先开始关,先发一个FIN报文,然后对方就是收到后发回一个ACK,然后在发送一个FIN,在先发的那方收到ACK和FIN后,再发一个ACK回应就断开连接;

注:这些协议已经封装在TCP协议的内部,socket编程接口平时不用管的;

具体可以看这篇博文:https://www.2cto.com/net/201208/149347.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值