1.1 TCP协议简介

来源:互联网 发布:java短信接口视频教学 编辑:程序博客网 时间:2024/06/05 22:43

  提起网络协议栈,首屈一指的自然是TCP/IP协议栈.作为TCP/IP协议栈的核心协议之一,TCP早已成为网络应用程序开发者实现可靠数据传递的首选工具,HTTP, FTP, Telnet等协议都是基于TCP实现的.那么TCP有什么样的协议?它有哪些特点能赢得大家如此的青睐呢?

  TCP(Transmission Control Protocol)传输控制协议是一种面向连接的、可靠的、基于字节流的传输层(Transport layer)通信协议,在1981年由IETF的RFC 793正式提出。
    TCP的主要功能是在互联网中为提供可靠的、面向连接的进程间通信服务。其基本的功能如下:
1)基本数据传输
     TCP能够在通信双方间的每个方向(即全双工)传送一个连续的字节流,并将一定数量的字节封装成段然后通过互联网传输。
2)可靠性
     TCP能够将数据从损坏、丢失、重复、乱序中恢复。
3)流控制
     TCP能为数据发送者提供控制发送数据数量的手段。
4)复用
     允许一个主机内的多个进程同时使用TCP。
5)面向连接
     TCP是面向连接的协议,意味着通信双方必须先建立连接,然后才能传输数据,数据传输结束后必须关闭连接。使用面向连接的方式提供服务使得TCP能够通过保存连接信息等手段,更好地提供可靠数据交付。这意味着TCP无法支持多播,多播只能使用UDP一类无连接的协议来完成。

  要实现数据的可靠传输,TCP是很好的选择.用户无需关心数据的损坏、丢失、重复、乱序等等问题,只要将数据交给TCP,然后等待返回结果就可以了. 当然,TCP也有不适用的场合.例如,用TCP传输实时性较高的视频或音频数据的话,如果网络状况欠佳,可能会使得视频或音频出现花屏或卡顿现象.而视频音频应用对数据的完整性要求不高,这样就不如用UDP一类无连接的协议合适.对于数据的传输是使用TCP还是无连接协议要看实际的需求,需要开发者在可靠性与实时性等因素之间进行权衡.

  对于矢志不移的要使用TCP的开发者来说,接下来的问题就是如何使用.使用TCP的主要方法是Unix socket API,参数的调整可以使用sys文件系统,proc文件系统和sysctl内核参数设置工具.若把TCP的使用比作开车,API、sys文件系统、proc文件系统和sysctl内核参数设置工具,是汽车的方向盘、档位、油门等;TCP的实现在内核中,相当于汽车的齿轮、变速箱、轴承等等.了解挂档、踩油门时汽车内部部件的运作模式对于开好车是很有好处的;同样,学习内核中TCP的运作原理也会受益匪浅。执行socket API调用后TCP都做了什么?它如何保证数据的可靠传递?TCP如何支持高并发的I/O?代码之下,了无秘密。下面让我们到Linux内核代码中去寻找问题的答案,一起开启TCP探密之旅!

1 0
原创粉丝点击