传输控制协议TCP
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个重新发送
最新文章
- CS224d assignment 1【Neural Network Basics】
- javascript中this指针
- 最适合和最不适合新手使用的几款 Linux 发行版
- yii2中gii外网访问的配置方法
- Java动态加载类在功能模块开发中的作用
- 编写postgresql函数执行循环copy命令导入大数据
- windows Api AlphaBlend的使用方法
- Backbone的id
- 基于jQuery简单实用的Tabs选项卡插件
- java基础06 Java中的递归
- Numpy 操作
- Error occurred during initialization of VM Incompatible initial and maximum heap sizes specified
- iOS: 并发编程的几个知识点
- JSP概述
- group by 和where 条件后面不能用刚设置的别名。
- 通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件
- Python:每日一题004
- iOS 创建一个App目录结构
- Docker GitHub 网站中 Readme.md 以技术者的角度翻译
- oracel回收站清理
热门文章
- MySQL引擎简述
- 单片机联网,UIP实现tcp/udp协议
- RFID射频卡超市购物结算系统
- AOP:代理思想 (没有考虑到Spring)
- IOS开发-UI学习-沙盒机制&;文件操作
- sysctl.conf和limit.conf备忘待查
- 【java基础】内部类,局部内部类,匿名内部类、静态内部类、接口中的内部类
- 关于jquery的$each((Object, function(p1, p2)用法
- C++指针与const
- NSBundle介绍