网络数据包如何产生
来源:互联网 发布:头文字d电影知乎 编辑:程序博客网 时间:2024/06/15 04:11
1.本机IP 为1.1.1.1,目的网址被DNS解析为2.2.2.2;
2.HTTP层组织数据为data包,调用TCP socket连接函数:TCP_CONNECT(2.2.2.2,80);
3.TCP三次握手: 协商sequence number,即每个发送字节的编号,便于双方确认;
协商window size,即双方最大接受缓冲区大小,便于进行流量控制;
告知双方最大报文长度(mss):以免引起不必要的IP分片;
协商SACK、NACK,减少数据丢包引起的重传数;
协商window scaling,加大window size;
4.调用TCP socket发送函数:TCP_SEND(2.2.2.2,80,data);
5.TCP层完成TCP头、TCP payload等封装,成为一个segment包,调用IP层接口函数:IP_SEND(2.2.2.2,segment);
6.IP层检查路由表,通过ARP查询下一跳MAC地址为MAC2,并判断是否分片,最后完成IP层IP packet包所有封装;
7.调用函数:Ethernet_send(MAC2,packet);
8.在MAC层,加上Ethernet header,MAC1(本机地址),MAC2(下一跳地址),Ether protocol:0x0800,FCS字段加入CRC校验码,通过网络接口和网卡将之封装成Ethernet frame;
9.发送:preamble(前导码)+SFD(MAC帧开始符)+Ethernet frame
阅读全文
0 0
- 网络数据包如何产生
- 关于网络延时如何产生
- 网络数据包
- 数据包是如何在网络中传输的
- 数据包是如何暴露网络攻击DNA的?
- 网络数据包监视 - 类
- 网络数据包截获原理
- 截获网络数据包作业
- Ethereal截获网络数据包
- 网络数据包的解析
- 接收网络数据包
- 网络数据包字节序
- Linux网络数据包分析
- ftp网络数据包分解
- 网络syno数据包
- pacp 网络数据包抓取
- 捕获网络数据包
- 捕获网络数据包
- android RelativeLayout 按钮总在最上层 问题
- 什么是JavaScript
- 数据库优化一般思路(个人经验之谈)
- [FWT] Codeforces 663E. Binary Table
- cuda、cudnn相关问题链接
- 网络数据包如何产生
- notepad++ json格式化插件
- mysql中FIND_IN_SET的使用方法
- openwrt安装软件的两个方法
- Android 高级面试题及答案
- eclipse引入.dll动态链接库
- 虚拟化迁移,你需要特别注意的几个问题
- Nginx+Keepalived实现nginx的高可用集群搭建
- org.springframework.beans.factory.BeanCreationException: Error creating bean with name