TCP协议详解
为什么会有TCP/IP协议
在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别。就好像圣经中上帝打乱了各地人的口音,让他们无法合作一样。计算机使用者意识到,计算机只是单兵作战并不会发挥太大的作用。只有把它们联合起来,电脑才会发挥出它最大的潜力。于是人们就想方设法的用电线把电脑连接到了一起。
但是简单的连到一起是远远不够的,就好像语言不同的两个人互相见了面,完全不能交流信息。因而他们需要定义一些共通的东西来进行交流,TCP/IP就是为此而生。TCP/IP不是一个协议,而是一个协议族的统称。里面包括了IP协议,IMCP协议,TCP协议,以及我们更加熟悉的http、ftp、pop3协议等等。电脑有了这些,就好像学会了外语一样,就可以和其他的计算机终端做自由的交流了。
TCP/IP协议分层
![TCP分层
2.jpg](http://upload-images.jianshu.io/upload_images/2964446-94da7e7442050d15.jpg?i
mageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
TCP/IP协议族按照层次由上到下,层层包装。
应用层:
向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。
TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。
传输层:
提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送。
网络层:
负责相邻计算机之间的通信。其功能包括三方面。
一、处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
二、处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。
三、处理路径、流控、拥塞等问题。
网络接口层:
这是TCP/IP软件的最低层,负责接收IP数据报并通过网络发送之,或者从网络上接收物理帧,抽出IP数据报,交给IP层。
IP 是无连接的
IP 用于计算机之间的通信。
IP 是无连接的通信协议。它不会占用两个正在通信的计算机之间的通信线路。这样,IP 就降低了对网络线路的需求。每条线可以同时满足许多不同的计算机之间的通信需要。
通过IP,消息(或者其他数据)被分割为小的独立的包,并通过因特网在计算机之间传送。
IP 负责将每个包路由至它的目的地。
IP地址
每个计算机必须有一个IP 地址才能够连入因特网。
每个IP 包必须有一个地址才能够发送到另一台计算机。
网络上每一个节点都必须有一个独立的Internet地址(也叫做IP地址)。现在,通常使用的IP地址是一个32bit的数字,也就是我们常说的IPv4标准,这32bit 的数字分成四组,也就是常见的255.255.255.255的样式。IPv4标准上,地址
被分为五类,我们常用的是B类地址。具体的分类请参考其他文档。需要注意
的是IP地址是网络号+主机号的组合,这非常重要。
CP/IP 使用32 个比特来编址。一个计算机字节是8 比特。所以TCP/IP 使用了4 个字节。
一个计算机字节可以包含256 个不同的值:
00000000、00000001、00000010、00000011、00000100、00000101、00000110、00000111、00001000 ....... 直到11111111。
现在,你知道了为什么TCP/IP 地址是介于0 到255 之间的 4 个数字。TCP 使用固定的连接
TCP 用于应用程序之间的通信。
当应用程序希望通过TCP 与另一个应用程序通信时,它会发送一个通信请求。这个请求必须被送到一个确切的地址。在双方“握手”之后,TCP 将在两个应用
程序之间建立一个全双工(full-duplex) 的通信。
这个全双工的通信将占用两个计算机之间的通信线路,直到它被一方或双方关闭为止。
UDP 和TCP 很相似,但是更简单,同时可靠性低于TCP。
IP 路由器
当一个IP 包从一台计算机被发送,它会到达一个IP 路由器。
IP 路由器负责将这个包路由至它的目的地,直接地或者通过其他的路由器。
在一个相同的通信中,一个包所经由的路径可能会和其他的包不同。而路由器负责根据通信量、网络中的错误或者其他参数来进行正确地寻址。
域名
12 个阿拉伯数字很难记忆。使用一个名称更容易。
用于TCP/IP 地址的名字被称为域名。 就是一个域名。
当你键入一个像这样的域名,域名会被一种DNS 程序翻译为数字。
在全世界,数量庞大的DNS 服务器被连入因特网。DNS 服务器负责将域名翻译为TCP/IP 地址,同时负责使用新的域名信息更新彼此的系统。
当一个新的域名连同其TCP/IP 地址一同注册后,全世界的DNS 服务器都会对此信息进行更新。
TCP/IP
TCP/IP 意味着TCP 和IP 在一起协同工作。
TCP 负责应用软件(比如你的浏览器)和网络软件之间的通信。
IP 负责计算机之间的通信。
TCP 负责将数据分割并装入IP 包,然后在它们到达的时候重新组合它们。
IP 负责将包发送至接受者。
TCP报文格式