网络TCP协议相关特性

首先TCP是:有连接   可靠传输   面向字节流   全双工

    UDP是:无连接    不可靠传输   面向字节报  全双工

TCP前面是有16位源端口和16位目的端口号,后面是32位序号(用来确认应答的)和32位确认序号,再往后是4位首都长度6个特殊的标志位(其中就有ack    acknowledge确认应答机制)和校验和等等

一.确认应答机制

        通过确认应答机制可以确保数据传输的可靠性,(这是TCP可靠性最核心的机制)

当一个数据报通过网络传输时,是通过把数据转换成光电信号,物理方式来传输的,一旦数据传输过程中出现物理意外,强电场磁场等破坏信号,可能出现"后发先至",后发的信息先到达,而这就需要一个确认应答机制来,一旦两次消息出现的顺序不一致,就会出现bug,应对方法就是针对请求和应答报文进行编号

,而这里的编号就是前面TCP协议里面的32位序号的作用,后面的32位确认序号就是用来确认应答的.

但是在传输过程中,A给B传输,A收到的信息有两条一样的,就会出现下面的超时重传现象

二.超时重传

如果数据包丢了,就会出现超时重传,通信双方第一次传输数据报是,会有有个应答的ack,但如果信息到达对方的时间比预期时间要久,最后还是会到达,也就会出现丢包,出现了延迟的现象.由于上面的确认应答机制,发送方可能重复发送一次数据或者接收方收到一次数据之后,发送ack应答一次丢包了,但是又发了一次应答,那么第一次的重复消息就会        根据确认序号来去重

三.连接管理

主要是三次握手,四次挥手机制

三次握手这里,理论上是发送方询问数据是否连接,接收方回复ack应答,同时有反问一个是否收到,发送方再回复收到.这样的四次连接,由于其中第二次和第三次时间上同时发送,也就省略了一次(合并成一次发送了),而四次挥手这里中间两次的时间和程序的设定有关,并不是有操作系统内核决定的.

说到这里不由得分析一下连接管理是为了什么:

1.提前确认了通信双方传输数据是正常的

2.检查了传输方和接收方的网络正常(不会丢包)

3.提前统一一下一些重要的参数

TCP里面比较重要的状态:

LISTEN(listen):服务器刚启动,可以正常通信的状态(刚new ServerSocket)

ESTABLISHED(established):通信双方刚刚建立连接的状态

COLES_WAIT(close_wait):等待代码中调用close操作

TIME_WAIT(time_wait):通信完成之后,接收和发送方  主动发送关闭的一方的状态,也是为了最后一个ack应答丢包了,没传出去,可以重新传输一次做准备

如果此时接收方想要断开连接传了个FIN之后,没见回复,就会再传一次FIN来等待对方传来ack

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值