在TCP/IP协议族中,
网路层协议包括IP协议、ICMP协议、IGMP协议。(Ping,Traceroute都使用ICMP协议)
传输层协议包括TCP、IP。
T C P传给I P的数据单元称作 T C P报文段或简称为T C P段(T C P s e g m e n t) 。I P传给网络接口层的数据单元称作I P数据报(IP datagram)。通过以太网传输的比特流称作帧(Fr a m e )。
* 由系统内核处理网络协议中的下三层(传输层、网络层、链路层)
* Tr a c e r o u t e工具可以让我们看到I P数据报从一台主机传到另一台主机所经过的路由。
* 广播和多播仅应用于 U D P。
TCP协议:
* TCP能提供的功能:
包括自适应的超时和重传策略、校验检验和、对数据进行排序、丢弃重复的数据、流量控制。
* TCP的数据结构:
TCP数据被封装在一个IP数据包中,包括20字节的IP首部、20字节的TCP首部、以及TCP数据。
* T C P还能提供流量控制。T C P连接的每一方都有固定大小的缓冲空间。 T C P的接收端只允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲区溢出。T C P的流量控制由连接的每一端通过声明的窗口大小来提供。
* T C P将用户数据打包构成报文段;它发送数据后启动一个定时器;另一端对收到的数据进行确认,对失序的数据重新排序,丢弃重复数据; T C P提供端到端的流量控制,并计算和验证一个强制性的端到端检验和。
* 当建立一个新的连接时,S Y N标志变1。序号字段包含由这个主机选择的该连接的初始序号I S N(Initial Sequence Number) 。该主机要发送数据的第一个字节序号为这个 I S N加1,因为S Y N标志消耗了一个序号(将在下章详细介绍如何建立和终止连接,届时我们将看到 F I N标志也要占用一个序号) 。
* 既然每个传输的字节都被计数,确认序号包含发送确认的一端所期望收到的下一个序号。因此,确认序号应当是上次已成功收到数据字节序号加 1。只有A C K标志(下面介绍)为1时确认序号字段才有效。发送A C K无需任何代价,因为32 bit的确认序号字段和A C K标志一样,总是T C P首部的一部分。因此,我们看到一旦一个连接建立起来,这个字段总是被设置, A C K标志也总是被设置为1。
* T C P连接是全双工(即数据在两个方向上能同时传递) ,因此每个方向必须单独地进行关闭。
* 最大报文段长度(M S S)表示T C P传往另一端的最大块数据的长度。当一个连接建立时,连接的双方都要通告各自的 M S S。我们已经见过M S S都是1 0 2 4。这导致I P数据报通常是4 0字节长。
* TCP给出两个策略来提高发送效率和减低网络负担:(1)捎带ACK。(2)Nagle算法(一次尽量多的发数据)。在编写插口程序的时候,可以通过TCP_NODELAY来关闭这个算法。
* 一般来说,TCP出现连接错误,TCP都会发出一个复位报文段。
* T C P管理4个不同的定时器。
1) 重传定时器使用于当希望收到另一端的确认。在本章我们将详细讨论这个定时器以及一些相关的问题,如拥塞避免。
2) 坚持( p e r s i s t )定时器使窗口大小信息保持不断流动,即使另一端关闭了其接收窗口。
3) 保活( k e e p a l i v e )定时器可检测到一个空闲连接的另一端何时崩溃或重启。
4) 2MSL定时器测量一个连接处于T I M E _ WA I T状态的时间。
TCP的状态迁移图:
4.TCP的状态迁移图
ESTABLISHED状态是连接双方能够进行双向数据传递的状态。
书P182页给出了TCP的状态图,这是一个看起来比较复杂的状态迁移图,因为它包含了两个部分---服务器的状态迁移和客户端的状态迁移,如果从某一个角度出发来看这个图,就会清晰许多,这里面的服务器和客户端都不是绝对的,发送数据的就是客户端,接受数据的就是服务器。
4.1.客户端应用程序的状态迁移图
客户端的状态可以用如下的流程来表示:
CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
以上流程是在程序正常的情况下应该有的流程,从书中的图中可以看到,在建立连接时,当客户端收到SYN报文的ACK以后,客户端就打开了数据交互地连接。而结束连接则通常是客户端主动结束的,客户端结束应用程序以后,需要经历FIN_WAIT_1,FIN_WAIT_2等状态,这些状态的迁移就是前面提到的结束连接的四次握手。
4.2.服务器的状态迁移图
服务器的状态可以用如下的流程来表示:
CLOSED->LISTEN->SYN_RCVD->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED
在建立连接的时候,服务器端是在第三次握手之后才进入数据交互状态,而关闭连接则是在关闭连接的第二次握手以后(注意不是第四次)。而关闭以后还要等待客户端给出最后的ACK包才能进入初始的状态。
4.3.其他状态迁移
书中的图还有一些其他的状态迁移,这些状态迁移针对服务器和客户端两方面的总结如下
LISTEN->SYN_SENT,对于这个解释就很简单了,服务器有时候也要打开连接的嘛。
SYN_SENT->SYN收到,服务器和客户端在SYN_SENT状态下如果收到SYN数据报,则都需要发送SYN的ACK数据报并把自己的状态调整到SYN收到状态,准备进入ESTABLISHED
SYN_SENT->CLOSED,在发送超时的情况下,会返回到CLOSED状态。
SYN_收到->LISTEN,如果受到RST包,会返回到LISTEN状态。
SYN_收到->FIN_WAIT_1,这个迁移是说,可以不用到ESTABLISHED状态,而可以直接跳转到FIN_WAIT_1状态并等待关闭。
路由器和网桥:
路由器是在网络层上对网络进行互联;而网桥是在链路层上对网络进行互联。
网络层传递的是分组,它尽可能快地把分组从源节点送到目的节点。但是并不提供任何可靠性保证。
分享到:
相关推荐
Windows 环境下 TCP/IP 协议的配置和诊断 本资源摘要信息主要涉及到 Windows 环境下的 TCP/IP 协议配置和诊断。该资源包括了 TCP/IP 协议的配置、 Ping 命令工具的使用、Ipconfig 工具的使用等内容。 知识点一:...
《microchip TCP/IP协议栈应用笔记V3.6》是一份深入探讨Microchip公司TCP/IP协议栈实现与应用的重要文档,特别适合嵌入式系统开发者和网络通信工程师参考。Microchip TCP/IP协议栈是该公司为微控制器提供的完整网络...
TCP/IP 协议在 Windows 环境下的配置和诊断 本文主要讲述了在 Windows 环境下 TCP/IP 协议的配置和诊断,包括网络配置、TCP/IP 协议配置、Ping 命令工具的使用、Ipconfig 工具的使用等内容。 一、网络配置 在 ...
TCP/IP协议族是互联网通信的基础,它是一组协议的集合,包括了网络接口层、网际层、传输层以及应用层等多个层次。这份"TCP/IP协议族(第四版)习题答案"涵盖了这个领域的核心概念和实践应用,对于学习者来说,是一个...
基于TCP/IP协议的Socket编程 TCP/IP协议是网络通信协议的基础,它规定了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据传输格式以及传送方式。TCP/IP协议的基本传输单位是数据包(datagram),TCP...
TCP/IP协议栈及其各个层次的内容 TCP/IP协议栈是一个复杂的网络协议栈,它由四个层次组成:网络层、传输层、高层和应用层。每个层次都有其特定的功能和协议。 网络层 网络层是TCP/IP协议栈的第三层,也是OSI参考...
### TCP/IP协议配置及Windows网络实用程序的应用 #### 实验背景与目的 随着信息技术的不断发展,网络已经成为现代社会不可或缺的一部分。为了确保网络的高效稳定运行,掌握TCP/IP协议配置及网络实用程序的应用至关...
### 对以太网全硬件TCP/IP协议栈的简单认识 #### 一、OSI七层结构模型概述 在深入探讨以太网全硬件TCP/IP协议栈之前,我们首先需要了解网络通信的基础——OSI(Open System Interconnect)七层模型。这一模型由...
STM32单片机在物联网和嵌入式系统中广泛应用,而TCP/IP协议栈是其在联网通信中不可或缺的一部分。TCP/IP(传输控制协议/互联网协议)是一组用于规范网络通信的标准协议,使得不同设备之间可以高效、可靠地交换数据。...
《TCP/IP协议族》由编程与网络权威专家BehrouzA.Forouzan撰写,是一本关于TCP/IP协议族的经典教材《TCP/IP协议族》图文并茂,重点概念突出。除了讲解一些基本概念和底层技术外,还介绍了TCP/IP协议族中的核心协议IP...
【TCP/IP协议栈详解】 TCP/IP协议栈是互联网通信的核心,负责将数据打包并发送到目的地,同时处理接收到的数据。本文将分析五个开源的TCP/IP协议栈:BSD TCP/IP、uC/IP、LwIP、uIP以及TinyTcp,探讨它们的特点、...
TCP/IP协议是互联网通信的基础,它定义了网络设备如何互相连接并交换数据。这个协议族由多个层次组成,包括应用层、传输层、网络层和数据链路层,每个层都负责不同的通信任务。 《TCP/IP协议详解》这套书籍分为三卷...
TCP/IP 协议分析及应用 TCP/IP 协议分析及应用是计算机网络的核心协议,了解 TCP/IP 协议对学习计算机网络和深入学习网络技术非常重要。本文对 TCP/IP 协议进行了详细的分析,并对 FTP 协议进行了实验,通过对 FTP ...
TCP/IP协议是互联网的核心协议,它定义了网络设备如何交换数据以及数据如何被格式化以进行传输。这个学习资料包,以PPT的形式,旨在帮助理解TCP/IP协议的工作原理及其在实际应用中的运用。 首先,TCP(Transmission...
在Internet普及的今天,作为Internet工作基础的TCP/IP协议及其编程已经成了IT人业人员所要具备的基本知识与技能。打开国内外各大知名网站的招聘页面,都可以看到类似于“熟悉TCP/IP协议、掌握socket通讯开发”等字样...
### AUTOSAR_SWS_TcpIp-stack TCP/IP协议栈 经典平台 4.3.1 #### 一、概述 本文档详细介绍了AUTOSAR_SWS_TcpIp-stack(TCP/IP协议栈)在经典平台上的规范,版本为4.3.1。此文档包含了自2013年初始发布以来的所有...
在IT行业中,网络编程是构建分布式系统和互联网应用程序的基础,而TCP/IP协议栈则是网络通信的核心。本主题将深入探讨“基于TCP/IP协议的网络编程”,特别是如何利用C++语言和Windows API函数来实现这一目标。 TCP...
TCP/IP协议,T C P / I P起源于6 0年代末美国政府资助的一个分组交换网络研究项目,到9 0年代已发展成为计 算机之间最常应用的组网形式。它是一个真正的开放系统,因为协议族的定义及其多种实现 可以不用花钱或花很...
在当今网络通信领域中,TCP/IP协议是最基础也是最重要的协议之一。TCP/IP协议是互联网通信的基础,它规定了设备之间进行通信的规则。"图解TCP/IP协议"这一主题将详细介绍TCP/IP协议的工作过程,其中涉及了建立连接、...
《经典TCP/IP协议教材》是一本深入探讨TCP/IP协议族的权威著作,源自国外的经典教程,深受广大网络技术爱好者和专业人士的推崇。该PDF版本包含了20个章节,全面覆盖了TCP/IP协议的核心概念和技术细节。 TCP/IP...