TCP三次握手浅显理解

TCP相较UDP,是一种面向连接的可靠数据包传递。

三次握手,相当于打电话中的喂,只是为了确定链路通畅,建立连接,本身不包含数据。

1)先发起请求的为客户端。

2)SYN是发起连接请求标志位,ACK是应答请求标志位,FIN是结束连接标志位,虽然只是占1个位,但是需用1个字节发送的。

这些个标志位可以类比flag置1或置0的操作。

3)SYN消耗一个包号。

4)包号是传输字节的编号,一个字节对应一个包号(编号)

5)syn是建立连接请求的意思

第一次:客户端(C)  --(发起连接请求)-->      服务器端(S)

                                       SYN  1000(0)                          //1000是包号,0是包中携带的数据(字节数),SYN是一个标志位,虽                                                                                                   //然 只占1位,但是需要一个字节来存储,所以,占了1 个字节

第二次:客户端(C)  <--(应答客户端连接请求,同时发起连接请求)--  服务器端(S)

                                        SYN 8000(0),  ACK 1001       //ACK 应答第1次的SYN,确认号是下一个希望接收到字节的编号

                                                                                              //向客户端发送连接请求

第三次:客户端(C)   --(应答服务器的连接请求)-->  服务器端(S)

                                          ACK 8001                                   //只需要对服务器进行应答即可,不需要再发起请求了

三次握手,跟发送的数据无关,只是确定网络是否畅通。类比打电话的喂

第二次握手后,客户端已经建立了对服务器的连接,第三次握手后,服务器才建立了对客户端的连接。

 断开连接的四次握手,是由于允许半关闭的状态,即允许一端先关闭(不发送连接请求了,只能接),另一端再关闭。

 

可以看到,在三次握手的中,是带有syn标志的,在建立连接之后的数据传输过程是不带syn的。

syn(0),未携带数据,但syn标志位占了一个字节;传输数据的过程中包号后是携带数据的;

ACK,只是应答,不携带数据的,携带数据的前面写的包号部分。

客户端主动发起连接,服务器端被动连接,

socket程序中,即connect -----客户端发送syn;

accept------服务器端发送syn,ack;

connet----客户端发送ack,connect正确返回,则三次握手建立

 

如下图所示,客户端可以连续发多次,然后,服务器进行统一回复。

 传递的数据包中syn中的0对应下图中的序号,ack中的1对应下图中的确认序号,

syn,ack对应下图中的标志位。

同时,在下图中,也可以看到,端口号是16位,即端口号最大是65535

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值