TCP为应用层提供的服务

  1. 提供进程和进程之间的通信

    答: 怎么区分服务目的主机上的哪个进程呢? 通过提供端口号(well-known port),

    如Telnet 23,DNS 53, HTTP 80, SMTP 25, FTP 21 22(数据,控制)

  2. 提供了面向连接的服务

    答: 区别于UDP的面向报文,UDP是一个报文一个报文地传输到目的IP上,两端并不会

    建立任何的连接,所以也是不可靠的,也是无序的,先后到达的顺序无法控制,也不会考虑

    接收端的接收缓存,和应用进程的读取速度等等,很可能因为缓存溢出的丢弃到达的UDP报文,

    所以不可靠!!!

    TCP的面向连接,并不是建立一条真实的连接。而是建立一条虚链路! 并不是物理链路。

    可以通过这条虚链路,进行有序的面向字节的传输,也就是一个字节一个字节这样的有序传输过去,

    而且因为有序,所以当接收方因为期望收到的序号与接收到的序号不匹配,就说明有丢失,所以可以通过

    这条虚链路实现 重传! 而UDP无法做到,所以可靠!

  3. 缓存机制

    运行了TCP的两端,都有各自的发送缓存和接受缓存,可以模拟成一个环形的缓存。

    发送缓存: 比如有三个字节是已发送的,后面的4个字节是已从应用进程中接收到但未发出去的,再后面的指针指向应用进程要写入的下一个空白区域(空的缓存块)。

    当发送方收到已发送出去的报文的ACK确认后,就把那片缓存清空(回收),是可循环利用的空间。

    问:是不是一发送出去就可以清空这片缓存?

    答:不是?因为要保存这个副本,等待这段数据的ACK的确认,因为TCP具有重传机制,就是靠的这个缓存机制。

    接受缓存:比如四个字节是已收到但未读取,并且有个指针指向下一个等待读取的缓存位置上。然后最后还有一个指针指向下一个要接收的位置。

  4. 全双工,就是两边都有发送缓存和接受缓存,所以两端可以同时进行发送和接收,是异步的,而不用同步停止等待。

  5. 分段传输

    答:TCP的分段的概念就是,从缓存中读取字节出来组成一个报文段,加上首部,封装起来,传给IP层,加上IP首部发过去。因为不可能是每次一个字节这样发过去,效率太慢了,所以组成报文段。

  6. 复用和分用

TCP的特点

编号系统

  1. 序号

    注意:TCP为每个要传输的字节进行编号,虽然传输的时候,是传输的报文段,但是实际上是根据字节来编号,而不是根据报文段来进行编号。

    而且:一开始的序号是从0-65535中随机抽取一个数作为开始的数作为第一个字节的序号,

    所以当接收方发来的确认号为4396,并不代表他已经接收了4395个字节,因为第一个字节序号是随机的!

  2. 确认号

    接收方发送的确认号是指 接收方期待收到的下一个字节的编号。

    并且是累积计算的,比如ACK_NUM = 4396, 表示已经收到了一开始到4395号字节,并对这一堆字节进行确认。而不是对第4395个字节的确认!

流量控制

依靠这个编号系统,可以使得 接收方能够对发送方进行流量的控制。

差错控制

差错控制使得TCP是可靠的,并且TCP提供的是面向字节的差错控制。

拥塞控制

发送方允许发送的数据受 接收方的缓存的影响,还要受到当前网络堵塞状况的影响

TCP协议基础(一)的更多相关文章

  1. HTTP/TCP协议基础

    HTTP协议 基本概念 HTTP协议(超文本传输协议 HyperText Transfer Protocol):是用于从WWW服务器传输超文本到本地浏览器的传送协议.它不仅保证计算机正确快速地传输超文 ...

  2. TCP协议基础

    IP协议是Internet上使用的一个关键协议,它的全称是Internet  Protocol,即Internet协议,通常简称IP协议.通过使用IP协议,使Internet·成为一个允许连接不同类型 ...

  3. TCP协议基础知识及wireshark抓包分析实战

    TCP相关知识 应swoole长连接开发调研相关TCP知识并记录. 数据封包流程 如图,如果我需要发送一条数据给用户,实际的大小肯定是大于你发送的大小,在各个数据层都进行了数据的封包,以便你的数据能完 ...

  4. Http协议与TCP协议简单理解(转)

    在C#编写代码,很多时候会遇到Http协议或者TCP协议,这里做一个简单的理解.TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上 ...

  5. Http协议与TCP协议简单理解

    TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通 ...

  6. Http协议与TCP协议理解

    TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通 ...

  7. HTTP协议 与 TCP协议 的区别

    TCP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据. TCP/IP和HTTP协议的关系,从本质上来说,二者没有可比性,我们在传输数据时,可以只使用(传输 ...

  8. iOS-----使用CFNetwork实现TCP协议的通信

    使用CFNetwork实现TCP协议的通信 TCP/IP通信协议是一种可靠的网络协议,它在通信的两端各建立一个通信接口,从而在通信的两端之间形成网络虚拟链路.一旦建立了虚拟的网络链路,两端的程序就可以 ...

  9. <再看TCP/IP第一卷>TCP/IP协议族中的最压轴戏----TCP协议及细节

    题外话:刚刚过去的半个月实在是忙得我喘不过来气,虽然手里还压着几个项目得在期末考试之前做完,但是想想还是更新一下随笔,稍微换个心情.另外小吐槽一下那些在博客园里原封不动抄书当随笔的人,唉真是....算 ...

随机推荐

  1. Java中两个Long对象如何比较是否相等

    学java的都知道8种基本类型,知道Long和long的区别,前者定义的是对象,后者定义的是long类型的变量. 但是今天在比较两个Long类型值的时候碰到一个坑,如下: 问题如下 Long a = ...

  2. BZOJ 1758 / Luogu P4292 [WC2010]重建计划 (分数规划(二分/迭代) + 长链剖分/点分治)

    题意 自己看. 分析 求这个平均值的最大值就是分数规划,二分一下就变成了求一条长度在[L,R]内路径的权值和最大.有淀粉质的做法但是我没写,感觉常数会很大.这道题可以用长链剖分做. 先对树长链剖分. ...

  3. Python XML 解析Ⅱ

    make_parser方法 以下方法创建一个新的解析器对象并返回. 参数说明: parser_list - 可选参数,解析器列表 parser方法 以下方法创建一个 SAX 解析器并解析xml文档: ...

  4. 解压 压缩 C#

    public class SharpZip { public SharpZip() { } /// <summary> /// 压缩 /// </summary> /// &l ...

  5. SDOI2015 寻宝游戏 | noi.ac#460 tree

    题目链接:戳我 可以知道,我们相当于是把有宝藏在的地方围了一个圈,求这个圈最小是多大. 显然按照dfs序来遍历是最小的. 那么我们就先来一遍dfs序列,并且预处理出来每个点到根的距离(这样我们就可用\ ...

  6. 2019牛客暑期多校训练营(第二场)A 数学

    题意 eddy走一个长度为\(n\)的环,每次能往前或往后走一步,问走到\(m\)点恰好走完所有点至少一次的概率,前\(i\)个询问的答案要乘起来 分析 \(n=1,m=0\),答案为\(1\) \( ...

  7. maven项目启动找不到org.springframework.web.context.ContextLoaderListener

    解决方法: 1. 右键单击工程项目 ->点击 properties2. 选择 Deployment Assembly3. 点击 Add -> Java Build Path Entries ...

  8. PTA 二叉树路径

    二叉树的路径 (25 分) 二叉树是一种普通的数据结构.给出一棵无限的二叉树,节点被标识为一对整数,构造如下:     (1)树根被标识为整数对(1,1).     (2)如果一个节点被标识为(a,b ...

  9. Tree-based Model 如何处理categorical variable

    categorical variable 分为 order variale 和 non-order variable,其中order variable直接使用sklearn.preprocess.La ...

  10. shiro 不使用加密 解决 org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token [org.apache.sh

    测试本方法为失效的 报错: org.apache.shiro.authc.IncorrectCredentialsException: Submitted credentials for token ...