`

TCP,UDP

 
阅读更多
 
TCP/IP结构对应OSI
OSI中的层
功能 TCP/IP协议族
应用层 文件传输,电子邮件,文件服务,虚拟终端 TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等
表示层 翻译、加密、压缩 没有协议
会话层 对话控制、建立同步点(续传) 没有协议
传输层 端口寻址、分段重组、流量、差错控制 TCP,UDP
网络层 逻辑寻址、路由选择 IP,ICMP,OSPF,EIGRP,IGMP
数据链路层 成帧、物理寻址、流量,差错,接入控制 SLIP,CSLIP,PPP,MTU
物理层 设置网络拓扑结构、比特传输、位同步 ISO2110,IEEE802,IEEE802.2
注意tcp本身不具有数据传输中噪音导致的错误检测功能,但是有实现超时的错误重传功能;
TCP/IP结构对应OSI
TCP/IP
OSI
应用层
应用层
表示层
会话层
主机到主机层(TCP)(又称传输层)
网络层(IP)(又称互联层)
网络接口层(又称链路层)
数据链路层
物理层

网络接口层

物理层是定义物理介质的各种特性:
2、电子特性;
4、规程特性。
数据链路层是负责接收IP数据包并通过网络发送,或者从网络上接收物理,抽出IP数据包,交给IP层。
常见的接口层协议有:
Ethernet 802.3、Token Ring 802.5、X.25Frame relayHDLC、PPP ATM等。

网络层

负责相邻计算机之间的通信。其功能包括三方面。
  1. 处理来自传输层的分组发送请求,收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
  2. 处理输入数据报:首先检查其合法性,然后进行寻径--假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿,则转发该数据报。
  3. 处理路径、流控、拥塞等问题。
网络层包括: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、NFS、HTTP。
FTP(File Transfer Protocol)是文件传输协议,一般上传下载用FTP服务,数据端口是20H,控制端口是21H。
Telnet服务是用户远程登录服务,使用23H端口,使用明码传送,保密性差、简单方便。
DNS(Domain Name Service)是域名解析服务,提供域名到IP地址之间的转换,使用端口53。
SMTP(Simple Mail Transfer Protocol)是简单邮件传输协议,用来控制信件的发送、中转,使用端口25。
NFS(Network File System)是网络文件系统,用于网络中不同主机间的文件共享。
HTTP(Hypertext Transfer Protocol)是超文本传输协议,用于实现互联网中的WWW服务,使用端口80。
传输层上的主要协议是TCP和UDP。正如网络层控制着主机之间的数据传递,传输层控制着那些将要进入网络层的数据。两个协议就是它管理这些数据的两种方式:TCP是一个基于连接的协议;UDP则是面向无连接服务的管理方式的协议。网络层中的协议主要有IP,ICMP,IGMP等,由于它包含了IP协议模块,所以它是所有基于TCP/IP协议网络的核心。在网络层中,IP模块完成大部分功能。ICMP和IGMP以及其他支持IP的协议帮助IP完成特定的任务,如传输差错控制信息以及主机/路由器之间的控制电文等。网络层掌管着网络中主机间的信息传输。

2协议优势

在长期的发展过程中,IP逐渐取代其他网络。这里是一个简单的解释。IP传输通用数据。数据能够用于任何目的,并且能够很轻易地取代以前由专有数据网络传输的数据。下面是一个普通的过程:
一个专有的网络开发出来用于特定目的。如果它工作很好,用户将接受它。
为了便利提供IP服务,经常用于访问电子邮件或者聊天,通常以某种方式通过专有网络隧道实现。隧道方式最初可能非常没有效率,因为电子邮件和聊天只需要很低的带宽。
通过一点点的投资IP 基础设施逐渐在专有数据网络周边出现。
用IP取代专有服务的需求出现,经常是一个用户要求。
IP替代品过程遍布整个因特网,这使IP替代品比最初的专有网络更加有价值(由于网络效应)。
专有网络受到压制。许多用户开始维护使用IP替代品的复制品。
IP包的间接开销很小,少于1%,这样在成本上非常有竞争性。人们开发了一种能够将IP带到专有网络上的大部分用户的不昂贵的传输媒介。
大多数用户为了削减开销,专有网络被取消。

3主要缺点

第一,它在服务、接口与协议的区别上就不是很清楚。一个好的软件工程应该将功能与实现方法区分开来,TCP/IP恰恰没有很好地做到这点,就使得TCP/IP参考模型对于使用新的技术的指导意义是不够的。TCP/IP参考模型不适合于其他非TCP/IP协议簇。
第二,主机-网络层本身并不是实际的一层,它定义了网络层与数据链路层的接口。物理层与数据链路层的划分是必要和合理的,一个好的参考模型应该将它们区分开,而TCP/IP参考模型却没有做到这点。
 
TCP三次握手
TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。

第一次

第一次握手:建立连接时
三次握手

三次握手

客户端发送syn包(syn=j)到服务器,并进入SYN_SENT状态,等待服务器确认;SYN:同步序列编号(Synchronize Sequence Numbers)。

第二次

第二次握手服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念:

未连接队列

三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN包(syn=j)开设一个条目,该条目表明服务器已收到SYN包,并向客户发出确认,正在等待客户的确认包。这些条目所标识的连接在服务器处于 Syn_RECV状态,当服务器收到客户的确认包时,删除该条目,服务器进入ESTABLISHED状态。

Backlog参数

表示未连接队列的最大容纳数目。SYN-ACK重传次数
三次握手协议

三次握手协议

服务器发送完SYN-ACK包,如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数,系统将该连接信息从半连接队列中删除。注意,每次重传等待的时间不一定相同。

半连接存活时间

是指半连接队列的条目存活的最长时间,也即服务器从收到SYN包到确认这个报文无效的最长时间,该时间值是所有重传请求包的最长等待时间总和。有时我们也称半连接存活时间为Timeout时间、SYN_RECV存活时间。

2基本原理

三次握手协议

三次握手协议

建设一个小型的模仿环境假设有3台接入互联网的机器。A为攻击者操纵的攻击机。B为中介跳板机器(受信任的服务器)。C为受害者使用的机器(多是服务器),这里把C机器锁定为目标机器。A机器向B机器发送SYN包,请求建立连接,这时已经响应请求的B机器会向A机器回应SYN/ACK表明同意建立连接,当A机器接受到B机器发送的SYN/ACK回应时,发送应答ACK建立A机器与B机器的网络连接。这样一个两台机器之间的TCP通话信道就建立成功了。
B终端受信任的服务器向C机器发起TCP连接,A机器对服务器C发起SYN信息,使C机器不能响应B机器。在同时A机器也向B机器发送虚假的C机器回应的SYN数据包,接收到SYN数据包的B机器(被C机器信任)开始发送应答连接建立的SYN/ACK数据包,这时C机器正在忙于响应以前发送的SYN数据而无暇回应B机器,而A机器的攻击者预测出B机器包的序列号(现在的TCP序列号预测难度有所加大)假冒C机器向B机器发送应答ACK这时攻击者骗取B机器的信任,假冒C机器与B机器建立起TCP协议的对话连接。这个时候的C机器还是在响应攻击者A机器发送的SYN数据。
TCP协议栈的弱点:TCP连接的资源消耗,其中包括:数据包信息、条件状态、序列号等。通过故意不完成建立连接所需要的三次握手过程,造成连接一方的资源耗尽。
通过攻击者有意的不完成建立连接所需要的三次握手的全过程,从而造成了C机器的资源耗尽。序列号的可预测性,目标主机应答连接请求时返回的SYN/ACK的序列号时可预测的。
UDP:选择UDP必须要谨慎。在网络质量令人不十分满意的环境下,UDP协议数据包丢失会比较严重。但是由于UDP的特性:它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。比如我们聊天用的ICQ和QQ就是使用的UDP协议。

分享到:
评论

相关推荐

    tcpudp 2.1.1 TCP/UDP 调试软件

    - tcpudp_2.1.exe、tcpudp_2.1.1.exe:这两个文件是软件的执行程序,版本号不同可能代表软件的不同更新版本。 - 安装说明.txt:提供软件的安装步骤和注意事项,对于用户来说是非常重要的指南。 通过这款软件,你...

    TcpUdp-v2.1.zip

    《TCP/UDP网络协议详解与TcpUdp-v2.1应用探索》 TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是互联网上最常用的两种传输层协议,它们各自具有独特的特性和应用场景。TCP是一种面向连接的...

    tcpudp_2.1.1.exe tcp udp测试

    tcpudp_2.1.1.exe 可以监听tcp udp通信信息 ,使用简单 密码123456

    TCPUDP测试_tcpudp测试工具_

    `tcpudp测试工具`通常用于网络性能测试和故障排查,它可以模拟TCP或UDP客户端和服务器,帮助我们验证网络连接的可靠性、速度以及端口的可用性。例如,我们可以使用这样的工具来检查网络延迟、丢包率、带宽利用率等...

    00Tcp Udp测试小工具源码

    【标题】"00Tcp Udp测试小工具源码"涉及的是网络通信中两种主要的传输层协议——TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)的应用实践。这个源码提供了一个小型的测试工具,可以帮助...

    Socket TCP UDP 客户端 服务器模拟工具

    在标题和描述中提到的"Socket TCP UDP 客户端 服务器模拟工具",它是一个帮助开发者理解和实践TCP和UDP协议的工具。TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是互联网上最常用的两种...

    TCPUDP调试工具

    TCPUDP调试工具是网络开发者和系统管理员常用的实用程序,用于测试、诊断和优化TCP与UDP通信。这些工具通常包含了丰富的功能,如发送和接收数据包、端口扫描、抓包分析等,对于理解网络通信行为,排查问题或进行性能...

    tcp测试工具sokit和tcpudp,支持64位win10,绿色免安装

    标题中的“sokit”和“tcpudp”是两个针对TCP和UDP协议的测试工具,主要用于网络通信的调试和性能评估。Sokit是一款强大的网络诊断工具,它支持TCP、HTTP、HTTPS等多种协议,提供命令行接口,便于进行快速的网络连接...

    2 TCPUDP(修改).rar

    在"2 TCPUDP(修改).rar"这个压缩包中,很可能包含了用Delphi编写的TCP和UDP通信的源代码示例。这些示例可能涵盖了如何初始化网络组件、设置连接参数、发送和接收数据以及处理各种网络事件等方面的知识。通过学习和...

    欧姆龙TCP UDP Socket网络通讯.zip

    本资源"欧姆龙TCP UDP Socket网络通讯.zip"提供了关于如何利用TCP和UDP协议通过Socket进行欧姆龙PLC设备通信的实例。以下是关于这个主题的详细知识点: 1. **Socket基础**: - Socket是一种网络编程接口,用于在...

    java读写Modbus TCP UDP数据,java与modbus通信,Modbus TCP UDP与java通信 全开源

    java读写Modbus TCP UDP数据,java与modbus通信,Modbus TCP UDP与java通信 全开源 这是一个能正常通过Modbus TCP UDP协议读写项目 请放心下载,完全开源,在多个项目中已经使用

    TCP UDP.zip

    在IT行业中,网络通信是至关重要的一个领域,而TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)则是两种最基础的传输层协议,它们在互联网通信中起着关键作用。本压缩包“TCP UDP.zip”可能...

    TCPUDP网络调试工具

    TCPUDP网络调试工具是一款用于测试TCP和UDP网络通信的软件,可以帮助开发者和网络管理员检查两台计算机之间是否能正常收发数据。通过模拟TCP连接或UDP数据包的发送和接收,可以检测网络连接的通畅性,排查网络故障。...

    TCPUDP测试工具1027_Setup.zip

    TCPUDP测试工具1027_Setup.zip是一个用于测试和分析这两种协议性能的实用程序,它包含TCPUDPDebug1027_Setup.exe安装程序以及可能的辅助材料1.ppt。 TCP,全称传输控制协议,是一种面向连接的、可靠的、基于字节流...

    TCPUDP Socket调试工具

    "TCPUDP Socket调试工具"是一个实用的开发辅助软件,它可能包含以下功能: 1. **监听和捕获**: 工具可以监听指定的端口,捕获通过TCP或UDP传输的数据包,以便开发者查看数据内容。 2. **发送数据**: 支持用户自定义...

    网络调试TCPUDP本地调试助手功能强大,好用!

    标题中的“网络调试TCPUDP本地调试助手”是一款专门针对TCP和UDP协议进行调试的工具。这样的助手通常包含多种功能,如监听网络流量、模拟客户端和服务器通信、查看数据包内容、分析数据传输过程等,以帮助开发者定位...

    TCP UDP 测试工具,服务器开发助手。

    TCP(Transmission Control Protocol)和UDP(User Datagram Protocol)是网络通信中的两种主要传输协议,它们在互联网应用中扮演着至关重要的角色。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,而...

    TCP UDP 测试工具,网络开发测试必备工具

    在IT行业中,网络通信是至关重要的一个领域,TCP(传输控制协议)和UDP(用户数据报协议)作为两种主要的传输层协议,扮演着数据传输的关键角色。本篇将详细介绍这两种协议及其测试工具,这对于网络开发和测试人员来...

    socket TCP UDP编程实例

    Socket编程是计算机网络通信的核心技术之一,主要涉及TCP和UDP两种传输协议。在这个"socket TCP UDP编程实例"中,我们将会探讨如何在Windows环境下,利用Visual Studio 2015进行客户端和服务端的开发。 首先,TCP...

    TCPUDP Socket调试工具.rar

    TCPUDP Socket调试工具通常是为了帮助开发者更好地理解和调试这两种协议的应用程序。 TCPUDP Socket调试工具主要用于以下几个方面的知识: 1. **Socket编程基础**:Socket是网络通信中的接口,它提供了进程间的...

Global site tag (gtag.js) - Google Analytics