
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
TCP协议是大多数软件编程开发程序员都需要熟练掌握的一个计算机网络知识,而本文我们就通过案例分析来简单了解一下,零基础入门计算机网络需要掌握哪些TCP知识点。
说说TCP报文部有哪些字段,其作用又分别是什么?
16位端口号:源端口号,主机该报文段是来自哪里;目标端口号,要传给哪个上层协议或应用程序
32位序号:一次TCP通信(从TCP连接建立到断开)过程中某一个传输方向上的字节流的每个字节的编号。
32位确认号:用作对另一方发送的tcp报文段的响应。其值是收到的TCP报文段的序号值加1。
4位头部长度:表示tcp头部有多少个32bit字(4字节)。因为4位大能标识15,所以TCP头部长是60字节。
6位标志位:URG(紧急指针是否有效),ACk(表示确认号是否有效),PSH(缓冲区尚未填满),RST(表示要求对方重新建立连接),SYN(建立连接消息标志接),FIN(表示告知对方本端要关闭连接了)
16位窗口大小:是TCP流量控制的一个手段。这里说的窗口,指的是接收通告窗口。它告诉对方本端的TCP接收缓冲区还能容纳多少字节的数据,这样对方就可以控制发送数据的速度。
16位校验和:由发送端填充,接收端对TCP报文段执行CRC算法以检验TCP报文段在传输过程中是否损坏。注意,这个校验不仅包括TCP头部,也包括数据部分。这也是TCP可靠传输的一个重要保障。
16位紧急指针:一个正的偏移量。它和序号字段的值相加表示后一个紧急数据的下一字节的序号。因此,确切地说,这个字段是紧急指针相对当前序号的偏移,不妨称之为紧急偏移。TCP的紧急指针是发送端向接收端发送紧急数据的方法。
TCP有哪些特点?
TCP是面向连接的运输层协议。
点对点,每一条TCP连接只能有两个端点。
TCP提供可靠交付的服务。
TCP提供全双工通信。
面向字节流。
TCP的粘包和拆包
TCP是面向流,没有界限的一串数据。TCP底层并不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行包的划分,所以在业务上认为,一个完整的包可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。
为什么会产生粘包和拆包呢?
要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包;
接收数据端的应用层没有及时读取接收缓冲区中的数据,将发生粘包;
要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包;
待发送数据大于MSS(大报文长度),TCP在传输前将进行拆包。即TCP报文长度-TCP头部长度>MSS。
解决方案:
发送端将每个数据包封装为固定长度
在数据尾部增加特殊字符进行分割
将数据分为两部分,一部分是头部,一部分是内容体;其中头部结构大小固定,且有一个字段声明内容体的大小。
TCP和UDP的区别?
TCP面向连接;UDP是无连接的,即发送数据之前不需要建立连接。
TCP提供可靠的服务;UDP不保证可靠交付。
TCP面向字节流,把数据看成一连串无结构的字节流;UDP是面向报文的。
TCP有拥塞控制;UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如实时视频会议等)。
每一条TCP连接只能是点到点的;UDP支持一对一、一对多、多对一和多对多的通信方式。
TCP部开销20字节;UDP的部开销小,只有8个字节。
TCP和UDP分别对应的常见应用层协议有哪些?
基于TCP的应用层协议有:HTTP、FTP、SMTP、TELNET、SSH
HTTP:HyperTextTransferProtocol(超文本传输协议),默认端口80
FTP:FileTransferProtocol(文件传输协议),默认端口(20用于传输数据,21用于传输控制信息)
SMTP:SimpleMailTransferProtocol(简单邮件传输协议),默认端口25
TELNET:TeletypeovertheNetwork(网络电传),默认端口23
SSH:SecureShell(安全外壳协议),默认端口22
基于UDP的应用层协议:DNS、TFTP、SNMP
DNS:DomainNameService(域名服务),默认端口53
TFTP:TrivialFileTransferProtocol(简单文件传输协议),默认端口69
SNMP:SimpleNetworkManagementProtocol(简单网络管理协议),通过UDP端口161接收,只有Trap信息采用UDP端口162。
说说TCP是如何确保可靠性的呢?
先,TCP的连接是基于三次握手,而断开则是基于四次挥手。确保连接和断开的可靠性。
其次,TCP的可靠性,还体现在有状态;TCP会记录哪些数据发送了,哪些数据被接收了,哪些没有被接受,并且保证数据包按序到达,保证数据传输不出差错。
再次,TCP的可靠性,还体现在可控制。它有数据包校验、ACK应答、超时重传(发送方)、失序数据重传(接收方)、丢弃重复数据、流量控制(滑动窗口)和拥塞控制等机制。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。