一、概述

主要特点:

1)面向连接的运输层协议

2)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)

3)TCP提供可靠交付的服务

4)TCP提供全双工通信

5)面向字节流:TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用进程给出的)

TCP的连接:

套接字:端口号拼接到IP地址

每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。同一个IP地址可以有多个不同的TCP连接,而同一个端口号也可以出现在多个不同的TCP连接中。

二、可靠传输的工作原理

1.停等协议

超时重传

2.连续ARQ协议和滑动窗口协议(重点)

假设A发送给B

1)以字节为单位的滑动窗口

TCP的滑动窗口以字节为单位,发送窗口表示:在没有收到B 的确认的情况下,A可以连续把窗口内的数据都发送出去。

发送缓存用来暂时存放:

1.发送应用程序传送给发送方TCP准备发送的数据

2.TCP已发送出但尚未收到确认的数据

接收缓存用来暂时存放:

1.按序到达的,但尚未被接收应用程序读取的数据

2.未按序到达的数据

注意:

1.虽然A的发送窗口是根据B的接收窗口设置的,但在同一时刻,A的发送窗口并不总是和B的接收窗口一样大

2.TCP通常对不按序到达的数据是先临时存放在接受窗口中,等到字节流中所缺少的字节收到后,再按序交付给上层的应用进程

3.TCP要求接收方必须有累积确认的功能,这样可以减少传输开销

最新文章

  1. WebService返回DataTable
  2. 在DrawingVisual上绘制圆形的进度条,类似于IOS系统风格。
  3. 【POJ】2318 TOYS(计算几何基础+暴力)
  4. JS-006-表格元素操作
  5. (0)图像处理opengl 写在前面的话
  6. GForms 快速入门指南
  7. springmvc环境的搭建
  8. mongodb一个关键字对多个字段同时查询,mongodb $or $and查询
  9. Oracle官方版Entity Framework
  10. [APIO2011]
  11. Android开发的一些总结
  12. python 模块 不可不知的知识点
  13. 内联元素padding与高度可控的分隔线实例页面
  14. Vagrant 中配置局域网端口
  15. 【文献04】无人驾驶高速AWID-AWIS车辆运动控制研究
  16. @Transactionl注解
  17. 从本机构建Linux应用程序VHD映像
  18. iOS UIApplication的代理方法总结
  19. ROS 教程之 vision : 用各种摄像头获取图像
  20. ADB模块源码分析(二)——adb server的启动

热门文章

  1. Python虚拟环境 之 virtualenv 与 virtualenvwrapper
  2. mysql数据库优化 几个思路
  3. Python自动化测试框架——概述
  4. 第一次:从今开始玩Linux,Ubuntu16.04
  5. 一直被用错的6种SQL 错误用法
  6. 前端基础之CSS_2
  7. Python中的函数(3)
  8. Django 再次学习笔记整理
  9. 什么样的经历,才能领悟成为架构师? >>>
  10. CodeForces230A