zoukankan      html  css  js  c++  java
  • TCP之基本概念

    1、TCP

      传输控制协议(Transmission Control Protocol),提供面向连接、可靠的传送服务。TCP是面向字节流的,“流”指的是流入到进程或从进程流出的字节序列,发送方的TCP将应用程序交下来的报文看做是一连串无结构的字节流,不保证应用程序所收到的数据块和应用程序所发出的数据块具有对应的大小关系,但接收方应用程序收到的字节流必须和发送方应用程序发送的字节流一样。

    1.1、TCP最主要的特点

    • TCP是面向连接的传输层协议;
    • 每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的(一对一);
    • TCP提供可靠交付的服务;
    • TCP提供全双工通信;
    • 面向字节流:
      • TCP的“流”(stream)指的是流入或流出进程的字节序列;
      • “面向字节流”的含义是:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成是一连串无结构的字节流。

    1.2、TCP面向流的概念

    • TCP不保证应用程序所收到的数据块和应用程序所发出的数据块具有对应的大小关系;
    • 但接收方应用程序收到的字节流必须和发送方应用程序发送的字节流一样。

    2、UDP

      用户数据报协议(User Datagram Protocol),提供无连接、不可靠的传输服务。无连接即发送之前不需要建立链接,因此减少了开销和发送数据之前的时延,但是在数据传输过程中会导致差错丢失。UDP是面向报文的,发送方UDP对应用程序交下来的报文,在简单添加首部之后就直接交付给网络层。

    2.1、UDP的主要特点

    • UDP是无连接的,发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延;
    • UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表;
    • UDP是面向报文的。UDP对应用程序交下来的报文,即不合并,也不拆分,而是保留这些报文的边界。UDP一次交付一个完整的报文;
    • UDP没有拥塞控制,因此网络出现拥塞时不会使源主机的发送速率降低。这对某些实时应用很重要,很适合多媒体通信的要求;
    • UDP支持一对一、一对多、多对一和多对的的交互通信;
    • UDP的首部开销小,只有8个字节,比TCP的20个字节首部要短。

    2.2、面向报文的UDP

    • 发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。 UDP对应用层交下来的报文,即不合并,也不拆分,而是保留这些报文的边界;
    • 应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文;
    • 接收方UDP对IP层交上来的UDP数据报,在去除首付后就原封不动的交付上层的应用程序,一次交付一个完整的报文;
    • 应用程序必须选择一个合适大小的数据报:
      • 若报文太长,UDP把它交给IP层后,IP层在进行传输时可能进行分片,这会降低IP层的效率;
      • 若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度过大,这也会降低IP层的效率。

    3、TCP和UDP的区别

    • TCP是面向连接的,需要事先建立连接(三次握手,释放需要四次挥手),而UDP是无连接的;
    • TCP有多种手段来保证传输质量(流量控制、差错检验、拥塞控制、对数据报排序等),一般用于对数据准确性要求高的FTP、HTTP、邮件系统的POP3,SMTP、远程登录等。UDP不对数据进行排序,没有拥塞控制,一般用于准确度不高的语音、视频通信;
    • UDP传送数据较TCP快速,因为系统开销也少,无需各项保质控制(TCP在转移数据时必须创建(并保持)一个连接。这个连接给通信进程增加了开销,让它比UDP速度要慢);
    • TCP通信是一对一的,而UDP是一对一、一对多、多对一和多对多的交互通信;
    • TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的。

    4、端口

      在网络技术中,端口(Port)大致有两种意思:一是物理意义上的端口,比如,ADSL Modem、集线器、交换机、路由器用于连接其他网络设备的接口,如RJ-45端口、SC端口等等;二是逻辑意义上的端口,一般是指TCP/IP协议中的端口,端口号的范围从0到65535,比如用于浏览网页服务的80端口,用于FTP服务的21端口等等。    ----百度百科

    • 每个TCP报文头部都包含源端口号(source port)和目的端口号(destination port),用于标识和区分源端设备和目的端设备的应用进程。
    • 在TCP/IP协议栈中,源端口号和目的端口号分别与源IP地址和目的IP地址组成套接字(socket),唯一的确定一条TCP连接。
    • 相对于TCP报文,UDP报文只有少量的字段:源端口号、目的端口号、长度、校验和等,各个字段功能和TCP报文相应字段一样。
  • 相关阅读:
    IE浏览器中Image对象onload失效的解决办法
    jquery.lazyload 实现图片延迟加载jquery插件
    在JS方法中返回多个值的三种方法
    遭遇input与button按钮背景图失效不显示的解决办法
    jquery:validate的例子
    JavaScript toLowerCase() 方法 把字符串转换为小写
    Linux下的MySQL简单操作(服务启动与关闭、启动与关闭、查看版本)
    phpcms-v9视频模型的添加
    Linux下如何查看tomcat是否启动
    margin-top无效的问题解决方法
  • 原文地址:https://www.cnblogs.com/Jummyer/p/10965782.html
Copyright © 2011-2022 走看看