2 链路层

最大传输单元MTU 以太网和802.3对数据帧的长度有个限制,其最大长度分别是1500和1942。链路层的这个特性称作MTU, 最大传输单元。不同类型的网络大多数都有一个限制。 如果IP层的数据报的长度比链路层的MTU大,那么IP层就需要分片,每一片的长度要小于MTU。 使用netstat -in可以打印出网络接口的MTU ➜ ~ netstat -in Kernel Interface table Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg eth2 1500 0 1078767768 2264 689 0 1297577913 0 0 0 BMRU lo 16436 0 734474 0 0 0 734474 0 0 0 LRU 路径MTU 信息经过多个网络时,不同网络可能会有不同的MTU,而其中最小的一个MTU, 称为路径MTU。

2019-11-28 13:35:34 · 1 min · Eddie Wang

1 概述

分层 应用程序一般处理应用层的 ------------------------------------------------------------ 应用层 # Telnet, FTP, Email, MySql | 应用程序细节 | 用户进程 ------------------------------------------------------------ 运输层 # TCP, UDP | 内核(处理通信细节) 端到端通信 | ------------------------------------------| 网络层 # IP, ICMP, IGMP | 逐跳通信,处理分组相关的活动,例如分组选路| ------------------------------------------| 链路层 # 设备驱动程序 接口卡 | 处理物理信号 | ------------------------------------------------------------ 应用层和传输层使用端到端的协议 网络层提供逐跳的协议 网桥在链路层来连接网络 路由器在网络层连接网络 以太网数据帧的物理特性是长度必须在46-1500字节之间 封装 以太网帧用来封装IP数据报。 IP数据报 = IP首部(20字节) + TCP首部(20字节) + 应用数据 # 针对TCP IP数据报 = IP首部(20字节) + UDP首部(8字节) + 应用数据 # 针对UDP 以太网帧 = 以太网首部(14字节) + IP数据报(46-1500字节) + 以太网尾部(4字节) IP数据报最大为1500字节,减去20字节IP首部,8字节UDP首部,留给UDP应用数据的只有1472字节。

2019-11-27 09:20:48 · 1 min · Eddie Wang

技巧1

1 面向连接和面向非连接的区别? 面向连接与面向非连接并不是指的物理介质,而是指的分组数据包。而实际上,连接只是一个虚拟的概念。 数据在发送前,会被分组发送。对于面向连接的协议来说,每个分组之间都有顺序的,分组会存储自己的位置信息。 可以理解在同一时间只维持一段关系。 面向非连接协议,分组直接并无任何关系,每个分组都是相互独立的。可以理解为脚踏多条船。

2019-11-25 20:24:24 · 1 min · Eddie Wang

基本套接字API回顾

套接字API SOCKET socket(int domain, int type, int protocol) Socket API和协议无关,即可以用来创建Socket,无论是TCP还是UDP,还是进程间的通信,都可以用这个接口创建。 domain 表示通信域,最长见的有以下两个域 AF_INET 因特网通信 AF_LOCAL 进程间通信 type 表示套接字的类型 SOCK_STREAM 可靠的、全双工、面向连接的,实际上就是我们熟悉的TCP SOCK_DGRAM 不可靠、尽力而为的,无连接的。实际上指的就是UDP SOCK_RAW 允许对IP层的数据进行访问。用于特殊目的,例如ICMP protocol 表示具体通信协议 TCP/IP 本自同根生!

2019-11-25 20:06:16 · 1 min · Eddie Wang

可能被遗漏的https与http的知识点

1. HTTPS域向HTTP域发送请求会被浏览器直接拒绝,HTTP向HTTPS则不会 例如在github pages页面,这是一个https页面,如果在这个页面向http发送请求,那么会直接被浏览器拒绝,并在控制台输出下面的报错信息。 jquery-1.11.3.min.js:5 Mixed Content: The page at 'https://wangduanduan.github.io/ddddddd/' was loaded over HTTPS, but requested an insecure XMLHttpRequest endpoint 'http://cccccc/'. This request has been blocked; the content must be served over HTTPS. 如果你在做第三方集成的系统,如果他们是在浏览器中直接调用你提供的接口,那么最好你使用https协议,这样无论对方是https还是http都可以访问。(相信我,这个很重要,我曾经经历过上线后遇到这个问题,然后连夜申请证书,把http升级到https的痛苦经历) 2. HTTPS的默认端口是443,而不是443 如果443端口已经被其他服务占用了,那么使用其他任何没有被占用的端口都可以用作HTTPS服务,只不过在请求的时候需要加上端口号罢了。

2019-10-15 21:56:42 · 1 min · Eddie Wang

ngrep明文http抓包教程

一般使用tcpdump抓包,然后将包文件下载到本机,用wireshark去解析过滤。 但是这样会显得比较麻烦。 ngrep可以直接在linux转包,明文查看http的请求和响应信息。 安装 apt install ngrep # debian yum install ngrep # centos7 # 如果centos报错没有ngrep, 那么执行下面的命令, 然后再安装 rpm -ivh http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm HTTP抓包 -W byline 头信息会自动换行 host 192.168.60.200 是过滤规则 源ip或者目的ip是192.168.60.200 ngrep -W byline host 192.168.60.200 interface: eth0 (192.168.1.0/255.255.255.0) filter: (ip or ip6) and ( host 192.168.60.200 ) #### T 192.168.1.102:39510 -> 192.168.60.200:7775 [AP] GET / HTTP/1.1. Host: 192.168.60.200:7775. User-Agent: curl/7.52.1. Accept: */*. . # T 192.168.60.200:7775 -> 192.168.1.102:39510 [AP] HTTP/1.1 302 Moved Temporarily....

2019-08-16 09:59:08 · 1 min · Eddie Wang

图解通信网络 第二版

图片来自 https://microchipdeveloper.com/ 只不过这个网站访问速度很慢,但是里面的图片非常有意思,能够简洁明了的说明一个概念。 上学的时候,数学老师喜欢在讲课前先讲一些概念,然后再做题。但是我觉得概念并没有那么重要,我更喜欢做题。 但是,当你理解了概念后,再去实战,就有事半功倍的效果。 1. 路由器 路由器(英语:Router,又称路径器)是一种电讯网络设备,提供路由与转送两种重要机制,可以决定数据包从来源端到目的端所经过的路由路径(host到host之间的传输路径),这个过程称为路由;将路由器输入端的数据包移送至适当的路由器输出端(在路由器内部进行),这称为转送。路由工作在OSI模型的第三层——即网络层,例如网际协议(IP)。 路由器用来做网络之间的链接,所以路由器一般至少会链接到两个网络上。常见的就是一边连接外网,一边连接内网。 2. IP地址 3. 交换机 4. 五层网络模型 5. TCP vs UDP 6. TCP 和 UDP 头 7. 常见的端口号 8. 客户端和服务端 9. Socket 10. Socket建立 11. 一个Web服务器的工作过程s step1: 服务器在80端口监听消息 step2: 客户端随机选择一个端口,向服务端发起连接请求 step3: 传输层将消息传输给服务器 服务端建立一个Socket用来和客户端建立通道 step4: 服务器通过socket将html发给客户端 step5: 消息接受完毕,Socket关闭 12 NAT 参考 https://zh.wikipedia.org/wiki/%E8%B7%AF%E7%94%B1%E5%99%A8

2019-07-08 21:32:50 · 1 min · Eddie Wang