计算机网络(7)-----TCP协议概述
传输控制协议(Transmission Control Protocol)
概念
一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。
主要特点
(1)TCP是面向连接的运输层协议。这就是说,应用程序在使用TCP协议之前,必须先建立TCP协议。在传送数据完毕后,必须释放已经建立的TCP连接。类似于“打电话”,需要先拨号建立连接,通话完之后要挂机释放连接。
(2)每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)。
(3)TCP铍铜可靠交付的服务,通过TCP连接传送的数据,无差错,不丢失,不重复,且按顺序到达。
(4)TCP提供全双工通信。TCP允许通信双发的应用进程在任何时候都发送数据。
(5)面向字节流。TCP中“流”(stream),指的是流入到进程或从进程流出的字节序列。“面向字节流”的含义是:虽然应用程序和TCP的交互式一次一个数据块(大小不等),但TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。
TCP的连接
TCP把连接作为最基本的抽象。
TCP连接的端点叫做套接字(socket)或插口。根据RFC 793的定义:端口号拼接到(concatenated with)IP地址机构称套接字。
因此就有 套接字 socket = {IP地址 : 端口}
因此每一条TCP连接唯一地被通信两端的两个套接字(端点)所确定。
停止等待协议(stop-and-wait)
停止等待就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
1.无差错情况
如上图a所示:A发出分组M1完就暂停发送,等待B的确认。B收到了M1就向A发送确认。A在收到了对M1的确认后,就再发送下一个分组M2。以此下去。
2.出现差错
如上图b所示:B在接受到M1时检测到了差错,就丢弃M1,并什么也不做。A只要超过了一段时间仍然没收到确认,就认为刚才的分组丢失了,就重传之前的分组,这就叫超时重传。
3.确认丢失和确认迟到
如上图a所示:B所发送的对M1的确认丢失了,A在超时重传的时间内没有收到确认,但无法知道是自己发送的分组出错,丢失,或者是B发送的确认丢失了,因此A会重传这个M1,当B收到的重传M1时,会有一下两个动作:(1)不向上层交付,丢掉这个重复的分组。(2)向A发送确认。
如上图B所示,B确认的分组M1迟到了,在超时重传的时间内未返回A,因此A会重传M1,之后当A收到了迟到的确认分组,就会丢弃重复的M1,不向上层交付。
4.总结
向上述的这种可靠传输协议常称为自动重传请求ARP,优点是简单,但是缺点也很明显,就是信道利用率过低。
计算机网络(7)-----TCP协议概述的更多相关文章
- [编程] TCP协议概述
TCP 协议概述 1.TCP提供一种面向连接的.可靠的字节流服务. 2.两个应用程序通过TCP连接交换8bit字节构成的字节流. 3.每个TCP首部都包含源端和目的端的端口号,用于寻找发端和收端应用进 ...
- 计算机网络 之 TCP协议报文结构
前言:上学期实训课,由于要做一个网络通信的应用,期间遇到各种问题,让我深感计算机网络知识的薄弱.于是上网查找大量的资料,期间偶然发现了roc大神的博客,很喜欢他简明易懂的博文风格.本文受roc的< ...
- 计算机网络:TCP协议建立连接的过程为什么是三次握手而不是两次?【对于网上的两种说法我的思考】
网上关于这个问题吵得很凶,但是仔细看过之后我更偏向认为两种说的是一样的. 首先我们来看看 TCP 协议的三次握手过程 如上图所示: 解释一下里面的英文: 里面起到作用的一些标志位就是TCP报文首部里的 ...
- TCP/IP详解学习笔记(9)-TCP协议概述
终于看到了TCP协议,这是TCP/IP详解里面最重要也是最精彩的部分,要花大力气来读.前面的TFTP和BOOTP都是一些简单的协议,就不写笔记了,写起来也没啥东西. TCP和UDP处在同一层---运输 ...
- 计算机网络之TCP协议与UDP协议
运输层向它上面应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层. 两个主机进行通信实际上就是两个主机中的应用进程互相通信.应用进程之间的通信又称为端到端的通信. 应用层不同进 ...
- 嵌入式linux的网络编程(1)--TCP/IP协议概述
嵌入式linux的网络编程(1)--TCP/IP协议概述 1.OSI参考模型及TCP/IP参考模型 通信协议用于协调不同网络设备之间的信息交换,它们建立了设备之间互相识别的信息机制.大家一定都听说过著 ...
- tcp/ip详解 卷1 -- 协议概述
第一章 概述 分层 TCP/IP 通常被认为是一个四层协议系统. 每一层负责不同的功能. 链路层, 也成为数据链路层或者网络接口层. 通常包括 操作系统中的设备驱动程序和计算机中对应的网络接口卡. 主 ...
- JAVA之旅(三十二)——JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用
JAVA之旅(三十二)--JAVA网络请求,IP地址,TCP/UDP通讯协议概述,Socket,UDP传输,多线程UDP聊天应用 GUI写到一半电脑系统挂了,也就算了,最多GUI还有一个提示框和实例, ...
- 计算机网络--TCP协议深入理解
在近期学习计算机网络的过程中,由于知识点过于零散,琐碎,从而学习起来痛苦不堪,此贴只是总结了基于传输层的TCP协议相关的知识细节,并加入一点自己的理解,并无创新,若有理解不当之处,敬请提出,感谢! 首 ...
随机推荐
- struts1
1.简单应用示例 导入struts1的jar包,然后配置xml,写java和jsp /struts/WebRoot/Login.jsp <%@ page language="java& ...
- 【转】PowerShell入门(五):Cmd命令与PowerShell命令的交互
转至:http://www.cnblogs.com/ceachy/archive/2013/02/18/Call_Between_Cmd_And_PowerShell.html 单独使用一种脚本来完成 ...
- 方法过滤器,分布式缓存 Memcached实现Session解决方案
控制器-〉方法过滤器-〉controller-> 方法 所以通过建立controller基类的方法进行方法过滤,所有控制器先执行基类的OnActionExecuting 方法. using Sp ...
- rocketmq简单搭建
摘要: 简单的部署管理RocketMQ队列 (nameserver broker在同一机器上) RocketMQ 是alibaba开源的消息队列. 本文使用的是开源版本v3.18 系统: centos ...
- css3实现轮播
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- LINK : fatal error LNK1104: 无法打开文件“LIBCD.lib”
出现这类问题一般是由于所运行的项目是VC6(或者vs2003)创建的,而后又用VS2005或者更高版本工具打开项目导致的,原因都是因为LIBCD.lib文件被更改了.要解决问题的话,只要在链接设置那里 ...
- Tiles & SiteMesh
Tiles & SiteMesh 这两天在给公司的新项目搭框架,在配tiles框架的时候发现一个小问题: 比如开发团队一共5人,每人10个页面,如果按照简单的tiles框架配置方法,每个 ...
- 【leetcode❤python】 1. Two Sum
#-*- coding: UTF-8 -*- #AC源码[意外惊喜,还以为会超时]class Solution(object): def twoSum(self, nums, target): ...
- 遗传算法在JobShop中的应用研究(part1: 绪论)
1. 什么是JobShop问题 Job,中文翻译成工件.一个工件又由若干道工序加工完成. resource, 资源.在本文的车间调度中资源指的是机器,每道工序要在某个特定机器上加工. Constrai ...
- eclipse https git
open preferences via application menu Window => Preferences (or on OSX Eclipse => Settings). N ...