首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

计网复习提纲(文字版)

:数据从高层往下层传递,每经过一层封装一层,直到物理层 接受数据:数据从下层往高层传递,每经过一层解封装一层.直到获得原始数据 路由器和链路层交换机都是收到数据传递到最高层,然后处理完毕之后再发送数据,...套接将这些报文传输到接受进程的套接 也就是说套接像一个管道的两端,发送进程发送信息到管道里面(也就是传递给套接),接受进程从管道里面接受信息(从套接里面获取信息),具体管道怎么实现的进程不需要了解...TCP的基础:“连接”,将连接用套接标记 UDP套接 目的端口 目的地址 TCP套接 目的端口 目的地址 源端口 源地址 多路复用 运输层从主机的不同套接中收集数据,为数据加上首部信息转发到网络层...多个来源一个目的,不同套接的数据转发到一个出口(即网络层) 多路分解 运输层的报文段根据首部交付到正确的套接 一个来源多个目的,一个网络层的数据可以根据套接的不同转发到不同的端口 3.3 UDP...:沿着通信路径连接相邻节点的通信信道 :数据链路层的分组单元 服务 成,访问 差错检测 可靠传递 流量控制 差错纠正 6.2 差错检测 CRC循环校验码 6.3 多路访问和协议 广播信道的特点

72020

原始 socket 编程

原始套接简介 普通 socket 的权力和原始 socket 权力对比。 1.原始 socket 可以和内核一样直接对所有层进行操作(除了物理层)。可以更改 mac 更改 ip 更改端口。...一种是处理IP层即其上的数据,通过指定socket第一个参数为AF_INET来创建这种套接。有两种原始套接。...(ETH_P_IP|ETH_P_ARP|ETH_P_ALL)) 发送接收以太网数据这种套接比较强大,可以监听网卡上的所有数据 能: 接收发往本地mac的数据 能: 接收从本机发送出去的数据...类型的数据 ETH_P_ARP 0x806 只接受发往本机mac的arp类型的数据 ETH_P_RARP 0x8035 只接受发往本机mac的rarp类型的数据 ETH_P_ALL 0x3...\n"); break; } else if (n==0) continue; //接收数据不包括数据

2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    tcpdump是在哪儿抓到的包?

    结论先行 先说结论:通过PF_PACKET这个特殊的套接协议,直接接收来自链路层的。...实际上,在网卡驱动程序通知内核接受到数据的时候,数据包就已经进入了内核处理流程。具体的区别,可以见下图。...image.png 普通套接的收包流程 先来看看,普通的套接的收包路径在内核中是怎么样。 以最常见的以太网网卡,当网卡接口接收到了一个,那么接受者知道它一定包含了一个Ethernet报头。...PF_PACKET套接的收包流程 当创建PF_PACKET套接时,与协议相关的数据包类型将被同时注册进ptype_all和ptype_base,接受函数为packet_rcb()。...值得一提的是,tcpdump依赖的libpcap库并非使用原始套接+recvfrom的方式收包,而是在内核空间分配一块内核缓冲区,然后用户空间调用mmap系统调用映射到用户空间。

    7.2K74

    使用TCPDUMP和Wireshark排查服务端CLOSE_WAIT(二)

    但是后面由于Linux服务端没有调用close()函数关闭socket,也即没有发送FIN标志的报文给主动关闭TCP的客户端,所以造成这个问题。...2 原因分析:从服务端程序出发 在服务端程序的第69行可以看到:一旦客户端关闭socket后,服务端也会调用close( client_sockfd );来关闭。...其实不然,在查阅了相关资料后,个人觉得正确的理解如下: listen()函数不会使进程阻塞,UNP第3版84页有一句话:listen函数把一个未连接的套接转换成一个被动套接,指示内核应接受指向该该套接的连接请求...内核为任何一个给定的监听套接维护两个队列:未完成连接队列和已完成连接队列。 因此,三次握手是由内核自动完成的,无需服务器进程插手。...4 总结 socket被动关闭的服务端产生CLOSE_WAIT的根本原因是没有调用close()函数关闭socket,也即没有发送FIN标志的报文给主动关闭TCP的客户端。

    20210

    链路层和局域网

    对于在的一端仅有一个发送方、的另一端仅有一个接收方的点对点,MAC协议比较简单(或者不存在),即无论何吋空闲,发送方都能够发送。...(1)名词 点对点(point-to-point link):由一端的单个发送方和另一端的单个接收方组成,如点对点协议(point-to-point protocol, PPP)和 高级数据控制...交换机缓存并且决不会在网段上同时传输多于一个 异质的:交换机将彼此隔离,因此局域网中的不同能够以不同的速率运行并且能够在不同的媒体上运行 管理:如果一个适配器工作异常并持续发送以太网(...从数据报抽取出TCP SYN 报文并分解到与端口 80相联系的欢迎套接。对于谷歌HTTP服务器和Bob便携机之间 的TCP连接生成一个连接套接。...数据报在操作系统中分解到TCP套接,从而进入连接状态 借助于Bob便携机上的套接,Bob的浏览器生成包含要获取的URL的HTTP GET报文。

    1.4K20

    如何通过LLDP获取网络拓扑?

    这是一个二层协议,它提供了一种标准方式来发现连接关系的能力,使得接入网络的一台设备可以将其主要的能力,管理地址,设备标识,接口标识等信息组织成不同的TLV(Type/Length/Value),并封装在...LLDP协议有四种工作模式: TxRx:既发送也接收LLDP Tx: 只发送不接收LLDP Rx:只接收不发送LLDP Disable:既不发送也不接收 LLDP的工作原理 LLDP协议,从本质上来讲就是一个信息发现和通告协议...3 获取lldp邻居信息 通过lldptool linux提供了一个工具 lldptool 来查询和管理lldp信息。...通过原始套接,抓取lldp数据 当然除了使用lldptool 工具来获取拓扑 信息,还可以自己通过抓取lldp 报文来分析相关的TLV信息,进而获取相连的邻居信息。...下面一个就是我通过原始套接抓取的lldp 信息: 可以看到,列表中的每一项均为,key,value的 元组形式,其中key表示的就是TLV type,value就是该type的所表示的具体信息,当前是以二进制的形式

    8.7K31

    关于Linux性能调优中网络IO的一些笔记

    对单一物理来说,大尺寸MTU通常会带来更好的性能,因为它需要的开销更小;反之,对嘈杂的(聚合)来说,更小的MTU则通常会提升性能,因为,当单个被损坏时,它要重传的数据更少。...当与远程机器连接时,本地应用程序用一个网络套接来打开远程机器上的一个端口。 Linux网络性能工具可以跟踪流经特定网络端口的数据量。...carrier 由于介质故障(如故障电缆)而丢弃的数据包数量 ifconfig提供的统计数据显示的是自系统启动开始的累计数值。...当多个设备试图同时使用网络时就会发生冲突 sar sar提供了级的网络性能数据。但是,它同时还提供了一些关于传输层打开的套接字数量的基本信息。...名字中带有socket的是网络套接。之后就可以利用这些信息来确定程序中的哪个套接产生了这些通信。

    1.4K20

    JAVA高并发网络编程之TCP和UDP协议(八)

    低三层 物理层:机械,电子,定时接口通信信道上的原始比特流传输。 数据链路层:物理寻址,同时将原始比特流转变为逻辑传输线路。...通过验证,确认和反馈重发等手段,形成稳定的数据,发送(010101)怎么样确定稳定的传输到另一端,软硬结合的,形成一个保障。 网络层:进行路由选择和流量控制,分组传输,路由选择(IP协议)。...这是个逻辑,没有真实的存在。 传输层:是个承上启下,提供可靠的端口到端口的数据传输服务(TCP/UDP协议)。 高三层 会话层:负责建立,管理和终止进程之间的会话和数据交换。...原始套接SOCK_RAM(面向网络层协议接口IP,ICMP等) socket API 及其调用过程 1、创建服务器套接---分配内存、初始化 2、服务器套接--侦听 3、建立与客户端配套的客户端套接...4、与客户端通讯(可以多客户端) 5、关闭、销毁[服务器端相应套接 客户端: 1、创建客户端套接---[分配内存]初始化 2、连接服务器 3、与服务器通讯 4、关闭、销毁客户端套接 PS:在实际的工作中

    94320

    Java程序设计(高级及专题)- 网络编程

    数据链路层 数据链路层的主要任务是实现计算机网络中相邻节点之间的可靠传输,把原始的、有差错的物理传输线路加上数据协议以后,构成逻辑上可靠的数据。...需要完成的功能有链路管理、成、差错控制以及流量控制等。其中成是对物理层的原始比特流进行界定,数据链路层也能够对的丢失进行处理。...UDP网络通信的收包过程: 使用DatagramSocket()创建一个数据包套接,绑定到指定的端口。...构造方法主要有以下几种形式: ServerSocket():创建非绑定服务器套接。 ServerSocket(int port):创建绑定到特定端口的服务器套接。...ServerSocket(int port,int backlog):利用指定的backlog创建服务器套接并将其绑定到指定的本地端口号。

    52420

    Linux 性能调优之网络内核参数优化

    Linux和其他主流操作系统中的网络流量被抽象(协议分层与OSI参考模型)为一系列的硬件和软件层次。在每个分层上,发送端添加首部包装信息,经过路由器,接受端分离首部恢复数据。...这里要经过 路由寻址,地址转发,到达目标IP主机,到达目标 IP 之后,会有个入栈操作 接受数据(入站) : 当数据到达网卡时,网卡会使用 DMA缓存区 将数据复制到接收缓冲区。.../ipv4/udp_mem 945957 1261278 1891914 ┌──[root@liruilongs.github.io]-[~] └─$ 对于这两个参数的调优,在使用 sar 来查看级的网络性能数据...内核缓冲区不足而导致的接收丢弃率 txdrop/s 由于Linux内核缓冲区不足而导致的发送丢弃率 txcarr/s 由于载波错误而导致的发送丢弃率 rxfram/s 由于对齐错误而导致的接收丢弃率...carrier 由于介质故障(如故障电缆)而丢弃的数据包数量 如果 overruns 存在值,可能需要调整上面的内核参数,适当增大。

    1.6K20

    从插上网线到web页面请求,究竟发生了哪些过程?(计算机网络篇)

    小明的web浏览器通过生成一个TCP套接开始了该过程,套接用于向www.baidu.com发送HTTP请求。为了生成该套接,小明的笔记本将需要知道www.baidu.com的IP地址。...IP数据报放置在链路层中,该适合将学校路由器连接到最左边的unicom路由器,并且该经这条发送。 15.  ...前面也说过支配分组经unicom和某度网络之间的转发的路由器转发表项,是由BGP协议决定的。 20.  最终,包含TCP SYN的数据报到达www.baidu.com。...从数据报抽取出TCP SYN报文并分解到与端口80相联系的套接。对于某度HTTP服务器和小明的笔记本电脑之间的TCP连接生成一个连接套接。...产生一个TCP SYNACK报文段,将其放入向笔记本电脑寻址的一个IP数据报中,最后放入链路层,该适合将www.baidu.com连接到其第一跳路由器。 21.

    75120

    python资源库——socket网络编

    sockket简介 socekt又称为‘套接’,用于描述IP和地址端口,是一个通信的句柄,应用程序通常通过套接向网络发出请求或者应答网络请求。...描述 socket.SOCK_STREAM 流式socket , for TCP (默认) socket.SOCK_DGRAM 数据报式socket , for UDP socket.SOCK_RAW 原始套接...,普通的套接无法处理ICMP、IGMP等网络报文,而SOCK_RAW可以;其次,SOCK_RAW也可以处理特殊的IPv4报文;此外,利用原始套接,可以通过IP_HDRINCL套接选项由用户构造IP...,flag]) 接受套接的数据。...通常是一个元组(ipaddr,port) sk.fileno() 套接的文件描述符 socket编程思路 TCP服务端 创建套接,绑定套接到本地IP与端口 开始监听连接 进入循环,不断接受客户端的连接请求

    89710

    Golang中用到的的Websocket库

    网络套接与 WebSockets 网络套接 网络套接,或简称为套接,用作内部端点,用于在运行在同一台计算机或同一网络上的不同计算机上的应用程序之间交换数据。...由于网络套接用于多种网络协议(HTTP、FTP 等),因此可以同时使用多个套接套接是由套接的应用程序编程接口 ( API )定义的一组函数调用创建和使用的。...有几种类型的网络套接: 数据报套接(SOCK_DGRAM),也称为无连接套接,使用用户数据报协议 (UDP)。数据报套接支持双向消息流并保留记录边界。...这些套接提供双向、可靠、有序和不重复的数据流,没有记录边界。 原始套接(或原始 IP 套接)通常在路由器和其他网络设备中可用。...这些套接通常是面向数据报的,尽管它们的确切特性取决于协议提供的接口。大多数应用程序不使用原始套接。提供它们是为了支持新通信协议的开发,并提供对现有协议更深奥的设施的访问。

    1.9K20

    OSI模型传输层的主要任务(一)

    连接端点 TCP的连接端点称为 套接(socket),根据TCP协议的规定,端口号拼接到IP地址即构成了套接。 也就是说TCP连接的端点不是主机,不是IP不是应用进程,而是套接。...套接 socket = (IP地址:端口号) 套接 socket = (IP地址: 端口号) TCP 连接 ::= {socket1, socket2} = {(IP1: port1), (IP2:...在具体的物理网络的链路层,我们看到的只是 MAC ,IP 数据报被封装在 MAC里面。 MAC 在不同的网络上传送时,其MAC 的首部是不同的。这种变化,在上面的IP 层上是看不到的。...作用:拥塞控制就是为了防止过多的数据注入到网络中,这样可以使网络中的路由器或者不至于过载。拥塞控制要做的都有一个前提:就是网络能够承受现有的网络负荷。...它的任务是处理发送能力大于接受能力。 ---- 下篇文章中,我们将介绍传输层上关于UDP,窗口,连接确认更丰富的内容,敬请期待。由于作者水平有限,文中的观点有不确切之处,欢迎评论讨论。

    2.3K30

    链路层是做什么的?

    点对点是指1条路上就一个通信端和接收端,比如两个路由器通过串口相连 企业微信截图_15626396177043.png 格式规则为: 开始和结束都用0x7E,在同步中,通过零比特填充的硬件技术完成转义...,异步是连续输出0x7d(转义字符)0x5e做转义(遇到了0x7d就连续输出0x7d0x5d) 转义字符:防止某些通信双方的串行接口驱动程序或者调制解调器吧控制字符解释成特殊字符,另外用控制协议指定是否要对某些值...一般情况下,字符值小于0x20都会转义 同步:以为单位传输(每大小不固定) 异步:以字符为单位传输(传输大小是固定的,比如8节),传输的首尾分别增加起始符合结束符 零比特填充技术:边界符...CRC(检查序列)是一个循环冗余检验码 相对SLIP的优点: 单串行线路支持多种协议 每一都有循环冗余检验 循环冗余检验:把原始的数据当做一个二进制,接收方和发送方选定一个除数,假定除数有4位,在原始数据二进制后添加...链路层[以太网(1500节)和802.3(1492节)]对数据的长度存在限制。 路径MTU:两台主机中的路由不同,而每个网络链路层的MTU可能不同,这样的通信主机之间的最小MTU为路径路由

    1.3K30

    UNPv1第二十六章:数据访问

    BSD的BSD分组过滤器BPF SVR4的数据提供者接口DLPI Linux的SOCK_PACKET接口 2....BPF: BSD分组过滤器 虽然在数据嵌入一个分组捕获机制并不困难,BPF的强大威力却在于它的过滤功能。...DLPI:数据提供者接口 应用进程介入数据链路层只需打开设备(例如le0)并使用DLPI的DL_ATTACH_REQQ请求将它与DLPI附接就可以了。...Linux:SOCK_PACKET 从数据获取所有 fd = socket(AF_INET, SOCK_PACKET, htons(ETH_P_ALL)); 获得IPv4 fd = socket...它提供普通的套接口接收缓冲区,但多个不能缓冲在一起,一次性的由应用进程读取。这么一来从内核向应用进程拷贝大量数据的开销势必增长 (2)Linux不提供针对设备的过滤。

    55430

    Netty权威指南_算法笔记上机指南pdf

    IO多路复用主要应用场景:①服务器需要同时处理多个处于监听或连接状态的套接。②服务器需要同时处理多种网络协议的套接。...②提供AIO功能,支持基于文件的异步IO操作和针对网络套接的异步操作。 ③完善通道功能,包括对配置和多播数据报的支持等。...通常由一个独立的Acceptor线程负责监听客户端的连接,它接收到连接请求后为每个客户端创建一个新的线程进行处理,处理完成之后,通过输出流返回应答给客户端,线程销毁。...⑤通过“ping/pong”保持激活。 ⑥服务器可以主动传递消息给客户端,不再需要客户端轮询。...一旦建立成功,就将注册到后端Reactor线程池的IO线程上,由IO线程负责后续IO操作。

    1.3K40
    领券