TCP/IP协议

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP/IP协议相关的知识,希望对你有一定的参考价值。

1.什么是TCP/IP协议

TCP/IP模型也被称作DoD模型(Department of Defense Model)。TCP/IP字面上代表了两个协议:TCP(传输控制协议)和IP(网际协议)。1983年1月1日,在因特网的前身(ARPA网)中,TCP/IP协议取代了旧的网络控制协议(NCP,Network Control Protocol),从而成为今天的互联网的基石。

2.层次概述

TCP/IP协议不是TCP和IP这两个协议的合称而是指因特网整个TCP/IP协议族

从协议分层模型方面来讲TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层

TCP/IP协议并不完全符合OSI的七层参考模型OSI(Open System Interconnect)是传统的开放式系统互连参考模型是一种通信协议的7层抽象的参考模型其中每一层执行某一特定任务该模型的目的是使各种硬件在相同的层次上相互通信这7层是:物理层、数据链路层(网络接口层)、网络层(网络层)、传输层、会话层、表示层和应用层(应用层)而TCP/IP通讯协议采用了4层的层级结构每一层都呼叫它的下一层所提供的网络来完成自己的需求由于ARPANET的设计者注重的是网络互联允许通信子网(网络接口层)采用已有的或是将来有的各种协议所以这个层次中没有提供专门的协议实际上TCP/IP协议可以通过网络接口层连接到任何网络上例如X.25交换网或IEEE802局域网

TCP/IP结构对应OSI结构

TCP/IP

OSI

应用层

应用层

表示层

会话层

主机到主机层(TCP)(又称传输层)

传输层

网络层(IP)(又称互联层)

网络层

网络接口层(又称链路层)

数据链路层

物理层

折叠 网络接口层

物理层是定义物理介质的各种特性:

1、机械特性;

2、电子特性;

3、功能特性;

4、规程特性

数据链路层是负责接收IP数据包并通过网络发送或者从网络上接收物理抽出IP数据包交给IP层

常见的接口层协议有:

Ethernet 802.3、Token Ring 802.5、X.25、Frame relay、HDLC、PPP ATM等

展开 纠错

 
 

TCP/IP协议 免费编辑 添加义项名

 

 添加义项

 
 
 
 
TCP/IP模型也被称作DoD模型(Department of Defense Model)。TCP/IP字面上代表了两个协议:TCP(传输控制协议)和IP(网际协议)。1983年1月1日,在因特网的前身(ARPA网)中,TCP/IP协议取代了旧的网络控制协议(NCP,Network Control Protocol),从而成为今天的互联网的基石。
 

基本信息

  • 中文名称

    传输控制协议/因特网互联协议

  • 外文名称

    Transmission Control Protocol/Internet Protocol

  • 释义

    TCP(传输控制协议)和IP(网际协议)

  • 简称

    TCP/IP协议

 
 

折叠 编辑本段 层次概述

TCP/IP协议不是TCP和IP这两个协议的合称而是指因特网整个TCP/IP协议族

从协议分层模型方面来讲TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层

TCP/IP协议并不完全符合OSI的七层参考模型OSI(Open System Interconnect)是传统的开放式系统互连参考模型是一种通信协议的7层抽象的参考模型其中每一层执行某一特定任务该模型的目的是使各种硬件在相同的层次上相互通信这7层是:物理层、数据链路层(网络接口层)、网络层(网络层)、传输层、会话层、表示层和应用层(应用层)而TCP/IP通讯协议采用了4层的层级结构每一层都呼叫它的下一层所提供的网络来完成自己的需求由于ARPANET的设计者注重的是网络互联允许通信子网(网络接口层)采用已有的或是将来有的各种协议所以这个层次中没有提供专门的协议实际上TCP/IP协议可以通过网络接口层连接到任何网络上例如X.25交换网或IEEE802局域网

TCP/IP结构对应OSI结构

TCP/IP

OSI

应用层

应用层

表示层

会话层

主机到主机层(TCP)(又称传输层)

传输层

网络层(IP)(又称互联层)

网络层

网络接口层(又称链路层)

数据链路层

物理层

网络接口层

物理层是定义物理介质的各种特性:

1、机械特性;

2、电子特性;

3、功能特性;

4、规程特性

数据链路层是负责接收IP数据包并通过网络发送或者从网络上接收物理抽出IP数据包交给IP层

常见的接口层协议有:

Ethernet 802.3、Token Ring 802.5、X.25、Frame relay、HDLC、PPP ATM等

网络层

负责相邻计算机之间的通信其功能包括三方面

一、处理来自传输层的分组发送请求收到请求后将分组装入IP数据报填充报头选择去往信宿机的路径然后将数据报发往适当的网络接口

二、处理输入数据报:首先检查其合法性然后进行寻径--假如该数据报已到达信宿机则去掉报头将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿则转发该数据报

三、处理路径、流控、拥塞等问题

网络层包括:IP(Internet Protocol)协议、ICMP(Internet Control Message Protocol)

控制报文协议、ARP(Address Resolution Protocol)地址转换协议、RARP(Reverse ARP)反向地址转换协议

IP是网络层的核心通过路由选择将下一条IP封装后交给接口层IP数据报是无连接服务

ICMP是网络层的补充可以回送报文用来检测网络是否通畅

Ping命令就是发送ICMP的echo包通过回送的echo relay进行网络测试

ARP是正向地址解析协议通过已知的IP寻找对应主机的MAC地址

RARP是反向地址解析协议通过MAC地址确定IP地址比如无盘工作站还有DHCP服务

传输层

提供应用程序间的通信。其功能包括:一、格式化信息流;二、提供可靠传输。为实现后者,传输层协议规定接收端必须发回确认,并且假如分组丢失,必须重新发送,即耳熟能详的"三次握手"过程,从而提供可靠的数据传输。

传输层协议主要是:传输控制协议TCP(Transmission Control Protocol)和用户数据报协议UDP(User Datagram protocol)。

 

应用层

向用户提供一组常用的应用程序,比如电子邮件、文件传输访问、远程登录等。远程登录TELNET使用TELNET协议提供在网络其它主机上注册的接口。TELNET会话提供了基于字符的虚拟终端。文件传输访问FTP使用FTP协议来提供网络内机器间的文件拷贝功能。

应用层协议主要包括如下几个:FTP、TELNET、DNS、SMTP、RIP、NFS、HTTP。

FTP(File Transfer Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。

Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。

DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换。

SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转。

RIP (Router Information Protocol)是路由信息协议,用于网络设备之间交换路由信息。

NFS (Network File System)是网络文件系统,用于网络中不同主机间的文件共享。

HTTP(Hypertext Transfer Protocol)是超文本传输协议,用于实现互联网中的WWW服务。
总结

OSI中的层
    

功能
    

TCP/IP协议族

应用层
    

文件传输,电子邮件,文件服务,虚拟终端
    

TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等

表示层
    

数据格式化,代码转换,数据加密
    

没有协议

会话层
    

解除或建立与别的接点的联系
    

没有协议

传输层
    

提供端对端的接口
    

TCP,UDP

网络层
    

为数据包选择路由
    

IP,ICMP,OSPF,EIGRP,IGMP,RIP

数据链路层
    

传输有地址的帧以及错误检测功能
    

SLIP,CSLIP,PPP,MTU,ARP,RARP

物理层
    

以二进制数据形式在物理媒体上传输数据
    

ISO2110,IEEE802,IEEE802.2

网络层中的协议主要有IP,ICMP,IGMP等,由于它包含了IP协议模块,所以它是所有基于TCP/IP协议网络的核心。在网络层中,IP模块完成大部分功能。ICMP和IGMP以及其他支持IP的协议帮助IP完成特定的任务,如传输差错控制信息以及主机/路由器之间的控制电文等。网络层掌管着网络中主机间的信息传输。

传输层上的主要协议是TCP和UDP。正如网络层控制着主机之间的数据传递,传输层控制着那些将要进入网络层的数据。两个协议就是它管理这些数据的两种方式:TCP是一个基于连接的协议;UDP则是面向无连接服务的管理方式的协议。

TCP/IP模型的主要缺点有:

第一,它在服务、接口与协议的区别上就不是很清楚。一个好的软件工程应该将功能与实现方法区分开来,TCP/IP恰恰没有很好地做到这点,就使得TCP/IP参考模型对于使用新的技术的指导意义是不够的。TCP/IP参考模型不适合于其他非TCP/IP协议簇。

第二,主机-网络层本身并不是实际的一层,它定义了网络层与数据链路层的接口。物理层与数据链路层的划分是必要和合理的,一个好的参考模型应该将它们区分开,而TCP/IP参考模型却没有做到这点。
折叠
编辑本段

 

数据格式


数据帧:帧头+IP数据包+帧尾 (帧头包括源和目标主机MAC地址及类型,帧尾是校验字)

IP数据包:IP头部+TCP数据信息(IP头包括源和目标主机IP地址、类型、生存期等)

TCP数据信息:TCP头部+实际数据 (TCP头包括源和目标主机端口号、顺序号、确认号、校验字等)

3.三次握手,四次挥手

TCP协议三次握手过程分析

TCP(Transmission Control Protocol) 传输控制协议

TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接:

位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)

Sequence number(顺序号码) Acknowledge number(确认号码)

第一次握手:主机A发送位码为syn=1,随机产生seq number=1234567的数据包到服务器,主机B由SYN=1知道,A要求建立联机;

第二次握手:主机B收到请求后要确认联机信息,向A发送ack number=(主机A的seq+1),syn=1,ack=1,随机产生seq=7654321的包

第三次握手:主机A收到后检查ack number是否正确,即第一次发送的seq number+1,以及位码ack是否为1,若正确,主机A会再发送ack number=(主机B的seq+1),ack=1,主机B收到后确认seq值与ack=1则连接建立成功。

完成三次握手,主机A与主机B开始传送数据。


在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。 
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认; 
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。 完成三次握手,客户端与服务器开始传送数据.

TCP 四次挥手

TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作,在socket编程中,任何一方执行close()操作即可产生挥手操作。

四次挥手:

由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。

(1)客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。

(2)服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。

(3)服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。

(4)客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。

 

技术分享

1.为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文和FIN报文多数情况下都是分开发送的。

2.为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态?

这是因为虽然双方都同意关闭连接了,而且握手的4个报文也都协调和发送完毕,按理可以直接回到CLOSED状态(就好比从SYN_SEND状态到ESTABLISH状态那样);但是因为我们必须要假想网络是不可靠的,你无法保证你最后发送的ACK报文会一定被对方收到,因此对方处于LAST_ACK状态下的SOCKET可能会因为超时未收到ACK报文,而重发FIN报文,所以这个TIME_WAIT状态的作用就是用来重发可能丢失的ACK报文。

 

 

 

 








































































































以上是关于TCP/IP协议的主要内容,如果未能解决你的问题,请参考以下文章

TCP/IP协议

TCP/IP协议

七TCP/IP协议

什么是TCP/IP协议?

TCP/IP协议详解

工具TCP/IP协议