一.TCP/IP协议是什么
首先,TCP/IP是为了解决任意两台主机上程序的互联而规定的一组平台无关的协议,如果没有标准的协议,那么每次需要网络通信的时候,应用程序就得处理从网卡的二进制信息流,到路由寻址,到端口连接,这一系列事情,导致网络无法发展壮大,信息的传递也会变得复杂。
首先看TCP/IP协议簇吧,从底层到高层为
网络接口层,网络层,传输层,应用层。
其中网络接口层,指物理连接和相邻网络结点的通信,协议有:ARP协议,RARP协议,以太网协议,无线网(WIFI)协议,比如线路中当前谁可以发送信息,如何识别信息的发送方,信息的格式。可以有不同的实现,比如令牌环,以太网,无线网,x.25等,不同协议的IP转换为物理地址的方式不同,报文格式不同,发送策略不同。
网络层,就是IP层,提供任意两个IP地址的主机的无连接的通信,协议有:IP协议,然后就是各种路由算法,ICMP协议。提供IP报文的格式,IP路由的处理,IP分片,当出现错误(丢失,乱序,无法到达,校验失败)和拥堵时,采用ICMP给源地址发信息。这一层,屏蔽了不同物理网络的不同,对高层提供了统一的接口。
传输层,定义了主机间端口到端口的通信,其实是为了方便进程间通信,抽象出了端口的概念,协议有TCP协议和UDP协议,如何识别端口,报文格式,是有连接还是无连接的。
分层协议要设计成达到这样一个效果,即目标机的第n层所收到的数据就是源主机第n层所发出的数据。它允许协议的设计者能在一段时间内把注意力集中到某一层上而不必担心较低层的执行情况。
端口其实是操作系统为了方便网络间进行通信提供了机制,相当于一个队列。对UDP来说,如果UDP程序接收到一个报文,就会看这个报文是哪个端口的,如果有端口在监听,就把这个报文放到相应的队列中,如果没有端口监听,就发送一个端口不可达的ICMP报文。如果队列满了,就丢弃这个报文。
TCP提供的有:虚数据连接,面向数据流,有缓冲(不会立即发送),无结构的数据流,全双工连接
TCP是建立在连接的抽象上的,与UDP不同。连接是包括一对ip和端口。
通过滑动窗口协议来控制拥塞,采用序号来确保连接的有序,通过重传来确保连接,
TCP状态机和过程见图
第二个图有点毛病,主机B的最后一条,不是进入TIME_WAIT状态,是进入CLOSED状态。因为这个时候主机B已经不用再等待什么超时了。主机A之所以会进入TIME_WAIT状态,是因为担心主机B没有收到ACK报文,这样主机B就可能认为主机A没有收到FIN,主机B可能会重新发FIN,这时候如果主机A没有响应,主机B还会持续发送直到超时,主机B很久后才会断开连接。如果在TIME_WAIT状态,主机A会重新发送ACK
引自 http://blog.csdn.net/zhenjing/article/details/4602493
相关推荐
TCP/IP协议是互联网通信的基础,它定义了网络设备如何连接到互联网以及数据如何在它们之间传输的规则。TCP/IP协议栈由四层组成,分别对应OSI参考模型的某些层,但并不完全相同。 1. **应用层**:这一层包含了许多...
Wireshark 分析 TCP 连接断开过程分析与总结 Wireshark 是一个功能强大的网络协议分析工具,能够对 TCP 连接断开过程进行详细的分析和总结。下面我们将对 Wireshark 分析 TCP 连接断开过程进行详细的分析和总结。 ...
TCP/IP实验报告及总结主要涵盖了网络通信中的核心协议——TCP/IP模型的基本原理、配置方法以及在实际应用中的操作。这份报告出自桂林电子科技大学的一门课程,不仅包含了代码示例,还对实验过程进行了深入的分析和...
在计算机网络领域,TCP(传输控制协议)和UDP(用户数据报协议)是两种最基础且重要的传输层协议。它们负责在互联网上可靠地或高效地传输数据。本篇文章将结合提供的文件名称,深入探讨TCP/UDP编程的核心知识点,...
总结来说,这个实验涵盖了TCP通信基础、MFC中的套接字编程以及异步通信模式的应用,通过服务端和客户端的互动,实现文本字符串的实时传输。这样的实践有助于开发者深入理解网络编程,特别是TCP通信的异步特性,提升...
总结来说,这个TCP转发工具项目是学习和实践网络编程,尤其是TCP协议和Java网络编程的一个宝贵资源。通过对源码的分析和实验,开发者可以增强自己在网络通信领域的技能,同时也能解决实际问题,如搭建代理服务器或...
总结来说,TCP在P2P通信中的应用,尤其是在NAT环境下的TCP打洞技术,是现代互联网通信的重要组成部分。这一技术解决了分布式系统中节点间直接通信的难题,促进了诸如文件共享、实时通信等多种服务的发展。理解并掌握...
总结来说,这个"android TCP server 和TCP client通信源码"示例涵盖了Android平台上的网络编程,涉及到TCP协议、Socket编程、多线程以及与硬件设备(如ST-MW-08S串口WiFi模块)的通信。通过深入理解和实践这些代码,...
总结,"tcptocom.rar"及其核心组件"Tcp2Com.exe"是串口设备接入TCP/IP网络的重要工具,它简化了串口与TCP之间的通信转换,为传统设备的网络化提供了有效解决方案。对于开发者而言,它更是学习网络编程和串口通信的...
socket tcp/udp 总结案例
### TCP/IP与Socket总结 #### 一、TCP/IP概述 **TCP/IP**(Transmission Control Protocol/Internet Protocol)是一组用于互联网及其相关网络的基础协议。它由一系列协议组成,旨在为不同类型的计算机网络提供通用...
总结来说,TCP和UDP是网络通信中的基础协议,TCP提供稳定可靠的连接,适合数据完整性要求高的场景,而UDP则适合对实时性要求高的应用。在Delphi开发中,可以通过组件和API实现TCP/IP的客户端和服务器端程序,进行...
总结来说,"TCP客户端和服务器端模拟器"是一个宝贵的工具,它提供了源代码和演示程序,帮助我们掌握TCP网络编程。无论是对TCP协议的理解,还是对实际应用的开发,都能从中受益匪浅。通过分析源代码,我们可以学习到...
### TCP协议分析实验报告 #### 实验目的 本次实验旨在深入了解TCP协议的工作原理与机制,具体包括以下几个方面: 1. **掌握TCP协议的首部格式**:了解TCP数据包的基本结构,包括各字段的作用和意义。 2. **掌握...
总结来说,由于Qt默认的ModBus TCP实现存在问题,开发者创建了一个基于QTcpSocket的新模块,通过自定义通信逻辑和错误处理策略,实现了稳定可靠的ModBus TCP通信。这个自定义模块的源代码分布在`modbustcp.cpp`和`...
### TcpListener 和 TcpClient 使用总结 #### 一、概述 在C#的.NET框架中,TCP编程是一项重要的技能,尤其适用于构建需要通过网络进行通信的应用程序。本文将深入探讨TcpListener与TcpClient类的使用方法及其背后...
总结,"ModbusTCP转RTU"是一种实用的技术,它解决了不同通信协议间的互操作性问题,使得采用不同通信方式的设备能够协同工作。了解并掌握这一转换过程对于实现工业自动化系统的集成和升级至关重要。
下面将对TCP和UDP的详细知识点进行归纳总结。 ### TCP协议知识点 1. **TCP/IP协议族成员**: TCP/IP并不只是指TCP和IP两种协议,它是一系列网络协议的统称,这些协议共同构成了互联网的基础。除了TCP和IP,还包括...
总结,ModbusTCP是工业控制领域的重要通信协议,而PC端的测试工具,如"ModbusTCP_Master V2.0",是调试和验证ModbusTCP设备的关键工具。了解和掌握这类工具的使用方法,能够极大地提升开发效率,保证系统的稳定性和...
总结来说,Modbus TCP是一种将传统的Modbus协议与TCP/IP相结合的通信协议,它在工业自动化环境中扮演着重要角色。实现Modbus TCP部分代码涉及连接建立、报文构造与解码、数据传输和错误处理等多个步骤。对这些步骤的...