TCP/IP协议:TCP与UDP的理解

TCP与UDP是属于第四层的运输层的协议,也是整个TCP/IP协议族的核心协议,并且TCP与UDP是同级的;

    TCP是可靠发送数据,他本身是基于流的发送,并且为了安全他发送数据前会去创建连接,如果传输过程中有遗失,会自动重传遗失资料;
   
    UDP是一层简单的封装,几乎不做任何处理,直接交给IP发送数据,所以他是基于报文形式的;
   
   
    TCP与UDP是可以确定端口的服务,同时TCP与UDP的关口是平行的,TCP:80与UDP:80并不是一个进程;
   
   
TCP协议:
      是一个运输协议,是属于很复杂的协议,他的功能主要是面向流,管理和创建链接,处理打包数据,属于可靠的传输协议,与UDP这个"大马虎"不同;
     
      那么就从他的功能上来说, 面向流;
           Java程序员都会知道流是什么,具体也不介绍他了,可能大家都知道Java上讲流是很底层的管道,但是这个管道究竟通道哪里,可能很少人会关心,
           现在告诉大家他就是传到TCP协议这里,然后从改造成数据段的;
           
           简单说下他的生命周期:
               发出方: 程序:(发送流)-> TCP:(接收流) ->TCP:(改造成数据段) -> ip(接收数据段) -> ip(封装数据报并发出)
               接收方: ip(提取出段)-> TCP:(提取出流) ->程序(接收流)
              
           大约意思就是这样;
           
               数据段:怎么说呢,大家知道流传递的是字节吧,TCP将他们按一定长度划分成数个或者是数十个报文,我们称之为段;
              
     那么下一个就是谈论他的安全可靠,这个要从两方面来说;
         第一个方面就是连接,大家知道TCP协议在传送数据前会先建立一个链接,然后如果正确的对应上,能够返回一个回应;
            当然,连接并不是这么简单的东西,话说他很复杂,他甚至包括传输数据,而且一般来讲TCP管理的是多条连接,并且给每个连接一个标识,让我们来确定的知道每个连接的错做;
               TCP协议管理着创建链接以及停止连接,如何建立连接刚才刚有说过,就说下终止连接:任何一方都可以关闭一个TCP连接,要求双方发送一个FIN信号关闭自己的通讯频道。一方可以在另一方之前关闭,或者双方同时关闭TCP连接。因此,当一方发送一个FIN信号时,另一方可发送“FIN+ACK”,开始关闭自己一方的通信并且确认收到了第一个FIN信号。发送第一个FIN信号的人接下来再发送一个“FIN+ACK”信息,确认收到第二个FIN信号。另一方就知道这个连接已经关闭了,并且关闭了自己的连接。发送第一个FIN的人没有办法收到最后一个ACK信号的确认信息。这时它会进入“TIME_WAIT”(等待时间)状态并启动一个定时器,防止另一方没有收到ACK信息并且认为连接仍是打开的。一般来说,这个状态会持续1至2分钟。
        
         第二个方面就是PAR,重传确定协议
             发报文时会起到定时器 ,如果对方数据丢失就会发不了关于定时器的回复,那么定时器超过时间被视为过期, 然后重传;
            这属于简单的理解;
            更有深度的就是通过字节数来判断,通过四种模式:1.已发送且得到确认的字节 2.已发送但尚未得到确认的字节 3.尚未发送但已做好准备接收
                                                4.尚未发送但未准备接收;
            这样可以计算出何时何段字节丢失,然后又将丢失的地方重传;
                  重传;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值