TCP主要特点:

(1)面向连接

(2)只能是点到点

(3)可靠的传输协议

(4)全双工通信,各自各自的读写缓冲区,应用层吧数据交给发送缓冲区,tcp合适就发送了,接受的时候tcp写入接受缓冲区,应用程序方便的时候就去缓冲区读入数据了

(5)面向可以拆分字节流

TCP的连接

我们说的每一个tcp连接有两个端口,这个端口是socket(ip&&端口号),套接字是个很抽象的概念,注意同一个ip地址可以有多个不同的tcp连接,同一个·端口号可以出现在不同的tcp连接之中

TCP可靠的传输原理:

tcp的报文发送给了ip层,但是下面ip层只是尽最大努力交付。并不是安全的,理想的安全是

(1)发送的分组不会有差错(解决:如果出现错误,重新发送)

(2)无论速度多块,接收端都可以收到(如果接收端不能即时收到,告诉发送方降低速度到

停止等待协议

1无差错传输

A向B发送一个分组,等待B确认后再发送下一个分组

 2:出现差错

如果在A向b发送的中途出现了问题丢弃了,A超过了一段时间没有收到,则会重新发送一个,这就是超时重传,要实现就需要设置一个超时计时器,A为每一个分组都设置了一个超时计时器,只要A的每一个分组收到了,就撤销可以了

注意3点:

(1)A在发送了一个分组后会保留一个备份(如果收到确认分组的时候,才会删除)

(2)对每一分组编号,知道哪一个分组收到了

(3)超时计时器的设置时间会比往返时间长一些

3:确认丢失和确认迟到

如果确认分组没有收到,那么A会向B继续发送分组,B收到后会丢弃,但是仍然向A发送确认分组,如果A收到多个确认分组,只对第一个有用,后面的收到但是什么都不做

上面就属于自动重传请求ARQ协议,重传的请求是自动的,不需要B向A发分组

4:信道利用率

非常低,为了提高传输效率,可以采用流水线传输,就是一次连续发送多个分组

那么就需要采用连续ARQ协议个滑动窗口协议

发送方每次收到一个确认,就将窗口向前移动,比如收到第5个分组的,就移动到底6个

接收方采用累积确认的方式,不必对所有的分组都发送,只对按顺序到达的最后一发送就可以了,表示这个之前的都受到了

如果发送5个,接收方只收到了2个,那么发送发需要对后三个重新发送,这叫做回退n协议,退回去把没陈宫的n个重新发送

最新文章

  1. CS224d assignment 1【Neural Network Basics】
  2. javascript中this指针
  3. 最适合和最不适合新手使用的几款 Linux 发行版
  4. yii2中gii外网访问的配置方法
  5. Java动态加载类在功能模块开发中的作用
  6. 编写postgresql函数执行循环copy命令导入大数据
  7. windows Api AlphaBlend的使用方法
  8. Backbone的id
  9. 基于jQuery简单实用的Tabs选项卡插件
  10. java基础06 Java中的递归
  11. Numpy 操作
  12. Error occurred during initialization of VM Incompatible initial and maximum heap sizes specified
  13. iOS: 并发编程的几个知识点
  14. JSP概述
  15. group by 和where 条件后面不能用刚设置的别名。
  16. 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
  17. Python:每日一题004
  18. iOS 创建一个App目录结构
  19. Docker GitHub 网站中 Readme.md 以技术者的角度翻译
  20. oracel回收站清理

热门文章

  1. MySQL引擎简述
  2. 单片机联网,UIP实现tcp/udp协议
  3. RFID射频卡超市购物结算系统
  4. AOP:代理思想 (没有考虑到Spring)
  5. IOS开发-UI学习-沙盒机制&文件操作
  6. sysctl.conf和limit.conf备忘待查
  7. 【java基础】内部类,局部内部类,匿名内部类、静态内部类、接口中的内部类
  8. 关于jquery的$each((Object, function(p1, p2)用法
  9. C++指针与const
  10. NSBundle介绍