原始套接字和普通的tcp套接字有啥不同?

author author     2023-05-01     765

关键词:

原始套接字可以读写内核没有处理的IP数据包,而流套接字(就是TCP流)只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。

这两句程序你就可以创建一个原始套接字.然而这种类型套接字的功能却与TCP或者UDP类型套接字的功能有很大的不同:TCP/UDP类型的套接字只能够访问传输层以及传输层以上的数据,因为当IP层把数据传递给传输层时。

下层的数据包头已经被丢掉了.而原始套接字却可以访问传输层以下的数据,,所以使用raw套接字你可以实现上至应用层的数据操作,也可以实现下至链路层的数据操作.

比如:通过sock = socket(PF_PACKET, SOCK_RAW, htons(ETH_P_IP))方式创建的raw socket就能直接读取链路层的数据.

1、使用原始套接字时应该注意的问题(参考<<unix网络编程>>以及网上的优秀文档)

2、对于UDP/TCP产生的IP数据包,内核不将它传递给任何原始套接字,而只是将这些数据交给对应的

UDP/TCP数据处理句柄(所以,如果你想要通过原始套接字来访问TCP/UDP或者其它类型的数据,调用socket。


参考技术A 我们常见的就是原始、tcp、udp3种套接字,主要区别:
原始套接字可以读写内核没有处理的IP数据包,而流套接字(就是TCP流)只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字。

网络骇客初级之原始套接字(sock_raw)

网络骇客初级之原始套接字(SOCK_RAW)本文用实际程序完成了MAC数据包分析,网络数据分析,MAC地址扫描器和飞秋欺骗在这里我把原来的入门改成了初级,因为对于原始套接字的操作确实在普通的TCP,UDP之上TCP和UDP确实涵盖了普... 查看详情

telnet 与原始 tcp 连接有何不同

...hon脚本向服务器发送命令。我可以看到正在服务器上建立套接字连接。但是我发送的命令似乎没有通过(服务器对套接字进行读取)。服务器当前支持telnet命令解释器。即:你telnet到命令地址和端口,你就可以开始发送了字符串... 查看详情

通过 Unix 套接字和 TCP/IP 套接字运行 PHP-FPM 有啥区别?

】通过Unix套接字和TCP/IP套接字运行PHP-FPM有啥区别?【英文标题】:WhatarethedifferencesfromrunningPHP-FPMoveranUnixSocketvsaTCP/IPSocket?通过Unix套接字和TCP/IP套接字运行PHP-FPM有什么区别?【发布时间】:2017-07-3023:51:39【问题描述】:有这两种... 查看详情

打开的套接字和连接的套接字有啥区别?

】打开的套接字和连接的套接字有啥区别?【英文标题】:Whatsthedifferencebetweenasocketwhichisopenandasocketwhichisconnected?打开的套接字和连接的套接字有什么区别?【发布时间】:2012-10-0205:39:29【问题描述】:JavaSocket类有两个方法isClose... 查看详情

关于原始套接字的两个小问题

1、原始套接字的协议是否可以设置为IPPRORO_TCP?UDP和TCP分组没有对应的套接字,此时会不会将其传递到原始套接口?答:(1) 可以。对于socket()函数,在流式套接字编程中第二个参数是SOCK_STREAM,而对于数据报套接字编程,... 查看详情

怎么用python和原始套接字发送一tcp数据包

参考技术ATCP的首部格式:012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|SourcePort|DestinationPort|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|SequenceNumber|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-... 查看详情

云或 Web 服务器上的原始 TCP 侦听套接字

】云或Web服务器上的原始TCP侦听套接字【英文标题】:RawTCPListenSocketonCloudorWebServer【发布时间】:2015-01-2012:46:15【问题描述】:我有硬件可以连接到任何给定IP和端口组合上的原始TCP套接字。然后它不断地发送字符。下面这段Pyth... 查看详情

python中的原始套接字和sendto

】python中的原始套接字和sendto【英文标题】:Rawsocketsandsendtoinpython【发布时间】:2012-06-1518:47:58【问题描述】:我正在努力将scapy与twisted集成,但我在OSX上遇到了一个我似乎无法弄清楚的非常奇怪的错误。基本上我无法通过原始... 查看详情

Flash 中的 WebSocket 与原始 TCP 套接字

】Flash中的WebSocket与原始TCP套接字【英文标题】:WebSocketsvsrawTCPsocketsinFlash【发布时间】:2011-08-2309:43:39【问题描述】:什么WebSockets添加到原始TCP连接?为什么要使用WebSockets?我想听听这样的利弊:很好:WebSockets添加了一些有... 查看详情

原始套接字-自定义ip首部和tcp首部

 1/*=====================================================================================2*3*Filename:raw.c4*Description:使用原始套接字发送TCP协议,并外带自己的数据。5*6*============================================== 查看详情

socket编程中close()和shutdown()有啥区别?

Socket编程中用close()和shutdown()关掉socket有什么实质性的区别?一、指代不同1、shutdown():是指禁止在一个套接口上进行数据的接收与发送。2、close():关闭一个套接口。更确切地说,它释放套接口描述字s,以后对s的访问均以WSAENOT... 查看详情

TCP和UDP相同的端口,不同的进程

...会发生什么?你能有两个不同的进程,每个进程都将一个套接字绑定到同一个端口但不同的协议吗?【问题讨论】:@Neil的评论完全不正确。您可以拥有两个使用相同端点的不同套接字, 查看详情

什么叫套接字。socket?

套接字,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通... 查看详情

原始套接字

原始套接字  一般情况下程序设计人员主要接触以下两类套接字:流式套接字(SOCK_STREAM):面向连接的套接字,对应于TCP应用程序。数据包套接字(SOCK_DGRAM):无连接的套接字,对应于UDP应用程序。  这一类套接字为标准套... 查看详情

什么是套接字(socket)

...计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口,区分不同应用程序进程间的网络通信和连接。生成套接字,主要有3个参数:通信的目的IP地址、使用的传输层协议(T 查看详情

在 C 中使用原始套接字

】在C中使用原始套接字【英文标题】:UsingrawsocketsinC【发布时间】:2021-06-1110:54:34【问题描述】:时,我试图设置tcp数据包的最大段大小,并且在尝试实现之前提出的问题的答案时遇到编译错误->settingthemaximumsegmentsizeinthetcphea... 查看详情

TCP:两个不同的套接字可以共享一个端口吗?

】TCP:两个不同的套接字可以共享一个端口吗?【英文标题】:TCP:cantwodifferentsocketsshareaport?【发布时间】:2012-06-2303:49:49【问题描述】:这可能是一个非常基本的问题,但它让我感到困惑。两个不同的连接套接字可以共享一个... 查看详情

socket(套接字)iptcpudphttp

Socket(套接字)(转)什么是套接字(Socket)?应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的... 查看详情