TCP协议的概念以及和UDP协议的区别

TCP协议的基本概念

TCP的全程是Transmission Control Protocol
1.TCP协议为应用程序提供了可靠的、端到端的、面向连接的字节流通信的协议
2.利用网络层IP协议提供的不可靠的分组传输服务,用来解决的重传和排序问题
字节流:应用程序对数据的发送和接受没有边界限制
面向连接:在传送数据之前,明确知道接收方的存在以及传输的一些性质(缓冲区的大小,发送序号的初始值)
Unicast:只支持两端点之间的通讯,不支持多播(Multicast)和广播(Broadcast)面向字节流的流逝协议
全双工:支持双方同时进行读写操作
进程寻址
小于1024的端口号为固定端口号(众所周知端口号:WWW端口号为80,邮件的端口号为25和110号端口)
寻址过程:用IP地址来找到主机,再用端口号来找到某个进程(socket)
TCP报头如下:
TCP协议的概念以及和UDP协议的区别
源端口和目的端口:分别指要发送的主机和要发送目地的主机
***:给数据的编号
确认号:接收方接收到数据回复给发送发的编号
偏移:TCP报文段的首部长度,四个字节
标志:分为六个标志
URG,紧急指针有效
ACK,确认号有效
PSH,缓冲区不必等到满即可上传(有紧急指针时,它是不希望被放在缓冲区的,因为需要被修改)
RST,连接崩溃时用于连接复位
SYN,建立连接时使用
FIN,断开连接
紧急指针字段:数据部分需要被紧急处理的最后一个编号
窗口字段:用来进行流量控制,用的是滑动窗口
校检和:接收端通过CRC算法来检验tcp报文是否损坏(包括头部和数据),这是tcp安全可靠的重要保障
封装
1.数据部分和头部封装在一起成为一个报文
2.报文向下调用网络层功能分装一个IP
3.在向下调用数据链路层封装成最终结果

在传输层协议中,还有一个重要的协议就是UDP协议,它的特点是:为应用程序提供无连接的数据传输服务

TCP与UDP的区别:
1.TCP相对于UDP来说是可靠的,有保证的。
2.TCP是面向连接的,UDP是无连接的
3.TCP是面向字节流的,UDP是面向报文的
4.TCP是全双工的可靠信道,UDP是不可靠信道。
5.TCP对系统资源的要求多,UDP对系统资源的要求小(开销问题)

问题1:为什么TCP比UDP可靠呢?
1.tcp采用应答机制,即每次发送一个tcp报文都需要得到接收端的回答,才人为是传输成功
2.tcp采用超时重传,每次发送数据报后会有一个计时器,如果在规定的时间内内有得到回复,就会重新发送一次。接收端接收到数据时,会将其按序号进行排列。然后根据用户定义的缓冲区大小来将其读出。

问题2:为什么TCP开销要比UDP多?
1.TCP每次发送数据都会有一个至少20字节大小的报头
2.TCP需要给每个报文编号,确保不会不会乱序