TCP三次握手以及UDP相关知识

报文:数据传输单元都叫报文

协议层:

负责穿过网络传输数据,需要有可靠性和高质量性
TCP三次握手以及UDP相关知识_第1张图片
传输层增加了网络层的可靠性,为应用程序提供无连接(如UDP)和面向连接(如TCP)服务
TCP三次握手以及UDP相关知识_第2张图片

UDP

TCP三次握手以及UDP相关知识_第3张图片

传输层(数据段)–>网络层(数据包)–>数据链路层(帧)–>物理层(bit)
TCP三次握手以及UDP相关知识_第4张图片

TCP

TCP报文
TCP三次握手以及UDP相关知识_第5张图片
固定首部长度20字节,可变部分0-40字节
1.源端口号,16bits,范围0-65535
2.目的端口,16bits,范围0-65535
3.sequence number:数据序号,32bits,TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
4.acknowledgement number:确认号,32bits,期望收到对方的下一个报文段的数据的第一个字节的序号。
5.数据偏移(首部长度),4bits,它指出报文数据距TCP报头的起始处有多远(TCP报文头长度)。
6.保留字段 6bits,保留今后使用,目前置0处理。
7.URG:紧急比特,1bit,当 URG=1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)
ACK:确认比特,1bit,只有当 ACK=1时确认号字段才有效。当 ACK=0 时,确认号无效
PSH:推送比特,1bit,接收方 TCP 收到推送比特置1的报文段,就尽快地交付给接收应用进程,而不再等到整个缓存都填满了后再向上交付
RST:复位比特,1bit,当RST=1时,表明TCP连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接
SYN:同步比特,1bit,同步比特 SYN 置为 1,就表示这是一个连接请求或连接接受报文
FIN:终止比特,1bit,用来释放一个连接。当FIN=1 时,表明此报文段的发送端的数据已发送完毕,并要求释放运输连接
8.窗口大小,16bits,窗口字段用来控制对方发送的数据量,单位为字节。TCP 连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。
9.检验和,16bits,检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
10.紧急指针字段,16bits,紧急指针指出在本报文段中的紧急数据的最后一个字节的序号。
11.选项字段,长度可变。TCP首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。 这部分最多包含40字节,因为TCP头部最长是60字节(其中还包含前面讨论的20字节的固定部分)

建立连接

通过发送初始数据包,进行三次握手
因为没有来自先前连接状态,所以两个主机都贡献了新的序列码
TCP三次握手以及UDP相关知识_第6张图片
TCP三次握手的过程如下:

建立TCP连接,就是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立。在socket编程中,这一过程由客户端执行connect来触发。

在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接.

第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认。

SYN:同步序列编号(Synchronize Sequence Numbers)

第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=J+1,随机产生一个值seq=K,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。

第三次握手:Client收到确认后,检查ack是否为J+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=K+1,并将该数据包发送给Server,Server检查ack是否为K+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
TCP建立连接通过三次握手,下面分别是普通情况和同时连接情况下的示意图。
TCP三次握手以及UDP相关知识_第7张图片

释放连接

正常释放序列,由主机1上的传输用户发起DR断开请求另一端确认两个DR
TCP三次握手以及UDP相关知识_第8张图片
使用TCP的应用程序只能看到字节流[右],而看不到作为单独的IP包发送的数据段[左]
TCP三次握手以及UDP相关知识_第9张图片

向上层提供的服务

传输层以数据包(以帧为单位)发送数据段
TCP三次握手以及UDP相关知识_第10张图片

TCP数据段报头

TCP头包括寻址(端口)、滑动窗口(以下。/确认。编号)、流量控制(窗口)、差错控制(校验和)等。
TCP三次握手以及UDP相关知识_第11张图片

你可能感兴趣的:(tcp/ip,udp,网络)