TCP报文格式+UDP报文格式+MAC帧格式
TCP和UDP的区别:
1)TCP是面向连接的,而UDP是无连接的
2)TCP提供可靠服务,而UDP不提供可靠服务,只是尽最大努力交付报文
3)TCP面向字节流,TCP把数据看成一串无结构的字节流,而UDP是面向报文的(UDP数据报+IP头部=IP数据报)
4)TCP有拥塞控制,UDP没有拥塞控制
5)TCP只提供点对点通信,而UDP提供点对点,点对多点,多点对多点的通信
6)TCP提供的是全双工的可靠信道,而UDP提供的是不可靠信道
7)TCP的首部开销有20个字节,而UDP的首部开销只有8个字节
TCP报文格式

序号:该报文段在整个报文中的序号,为本报文段发送的第一个字节的序号,比如该报文段第一个字节的序号为100,则该报文段的序号为100
确认序号:指明下一个期待收到的字节序号,比如当前报文段的序号为100,报文段的数据部分共有200个字节,则确认序号为100+200=300
首部长度:TCP报文首部长度,也是TCP报文数据部分的偏移量,以为存在选项部分
保留位:目前没有被使用,设置为0
标志位:
URG=1:紧急比特,报文中有紧急数据,应该尽快传递
ACK=1:确认比特,说明该报文是一个发送方返回的确认报文
PSH=1:推送比特,指示接收方在接收到报文后应该尽快交给应用进程,而不是等到整个缓存填满才发送给应用进程
RST=1:复位比特,TCP连接中出现严重差错,必须释放连接,然后重新建立连接
SYN=1:同步比特,表示TCP连接正在建立中,该报文是一个协商报文
FIN=1:终止比特,发送端已完成数据传输,请求释放连接
窗口大小:接收窗口的大小,表示接收端希望接受的字节数
校验和:反码求和,发送端计算,结果存入校验和字段,接收端校验,校验结果和校验和字段结果不同则丢弃报文,相同也不代表该报文没有出错,所以TCP的校验机制不能检查出所有等到错误,所以我们需要在应用层建立一套新的数据校验机制:MD5加密,在发送数据前使用MD5加密,并且将MD5摘要一起发送,接收端接收数据后再次进行MD5加密,加密结果等于发送的加密密钥则数据没有出错,不等于在数据出错了,抛弃该报文
紧急指针:仅在紧急比特URG=1时才有效,指明该TCP报文中紧急数据的字节数,同时也指明了紧急数据的末尾位置,因为紧急数据后面就是普通数据,即使窗口为0,也可以发送紧急数据
选项:(TCP报文除开选项和数据部分,总共20个字节)

UDP报文格式:(UDP报文首部8个字节)

MAC帧格式:

以太网的帧格式:

Preamble:前导同步码7个字节+帧开始定界符1个字节=8个字节
Destination MAC adress:目的MAC地址
Source MAC adress:源MAC地址
Type/Length:帧类型
User date :数据信息
Frame Check Sequence:帧校验序列
因此以太网帧的范围是72-1526字节
TCP报文格式+UDP报文格式+MAC帧格式的更多相关文章
- 以太网帧格式、IP数据报格式、TCP段格式+UDP段格式 详解
转载:http://www.cnblogs.com/lifan3a/articles/6649970.html 以太网帧格式.IP数据报格式.TCP段格式+UDP段格式 详解 1.ISO开放系统有 ...
- IP头,TCP头,UDP头,MAC帧头定义(转)
源:IP头,TCP头,UDP头,MAC帧头定义 一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { ]; //目的m ...
- IP数据报、TCP报文、UDP报文格式
总是记不得TCP/IP协议的各个协议格式,特在此做个记录,好方便回顾. 信息来自众多网络大神们的总结,我再结合自己的理解整理所得. ================================== ...
- IP头,TCP头,UDP头,MAC帧头定义
一.MAC帧头定义 /*数据帧定义,头14个字节,尾4个字节*/ typedef struct _MAC_FRAME_HEADER { char m_cDstMacAddress[6]; // ...
- MAC帧格式、IPV4数据报格式、TCP报文格式、UDP数据报格式
1.MAC帧格式 类型:2字节,指出数据域中携带的数据应交给哪些协议实体处理 校验码:校验数据段(采用32位CRC冗余校验方式进行校验) 2.IPV4数据报 版本:IP协议版本,这里为4 首部长度:占 ...
- IP封包协议头/TCP协议头/TCP3次握手/TCP4次挥手/UDP协议头/ICMP协议头/HTTP协议(请求报文和响应报文)/IP地址/子网掩码(划分子网)/路由概念/MAC封包格式
IP协议头IP包头格式: 1.版本号:4个bit,用来标识IP版本号.这个4位字段的值设置为二进制的0100表示IPv4,设置为0110表示IPv6.目前使用的IP协议版本号是4. 2.首部长度:4个 ...
- TCP/UDP报文格式
TCP报文格式 源端口:数据发送方的端口号 目的端口:数据接收方的端口号 序号:本数据报文中的第一个字节的序号(在数据流中每个字节都对应一个序号) 确认号:希望收到的下一个数据报文中的第一个字节的序号 ...
- 运输层5——TCP报文段的首部格式
写在前面:本文章是针对<计算机网络第七版>的学习笔记 运输层1--运输层协议概述 运输层2--用户数据报协议UDP 运输层3--传输控制协议TCP概述 运输层4--TCP可靠运输的工作原理 ...
- 计算机网络(8)-----TCP报文段的首部格式
TCP报文段的首部格式 概述 TCP报文段首部的前20个字节是固定的,因此TCP首部的最小长度是20字节. 源端口和目标端口 各占2个字节,分别写入源端口号和目的端口号. 序列号 占4个字节,表示本报 ...
随机推荐
- LeetCode 1130. Minimum Cost Tree From Leaf Values
原题链接在这里:https://leetcode.com/problems/minimum-cost-tree-from-leaf-values/ 题目: Given an array arr of ...
- JavaScript的深入理解(1)
(1)什么是JavaScript? JavaScript是一种专为与网页交互而设计的脚本语言,由三个部分组成:(1).ECMAScript :提供核心语言功能.(2).文档对象模型(DOM):提供访问 ...
- dinoql 试用
dinoql 前面有过介绍,详细的参考文档即可,这篇主要是简单使用 注意目前dinoql 直接通过node 运行会有window 的问题,有好几种解决方法,后边会说明 环境准备 项目初始化 yarn ...
- lettcode 上的几道哈希表与链表组合的数据结构题
目录 LRU缓存 LFU缓存 全O(1)的数据结构 lettcode 上的几道哈希表与链表组合的数据结构题 下面这几道题都要求在O(1)时间内完成每种操作. LRU缓存 LRU是Least Recen ...
- 【洛谷P5019】铺设道路
题目链接 众所周知,这道题和积木大赛是同一道题 题意就是给出一段自然数序列,每次操作\((L,R)\)把区间\([L,R]\)的数全部减一,不允许出现负数,问把序列变为零的最小操作次数 贪心做法 样例 ...
- 03-树2 List Leaves (25 分)
Given a tree, you are supposed to list all the leaves in the order of top down, and left to right. I ...
- Portainer实战
Portainer是一个轻量级的Docker环境管理UI,可以管理docker host和docker swarm(我主要看中了能管理swarm这个,毕竟市面上能管理swarm的平台不多).之所以说是 ...
- Linux 磁盘格式化、检验、挂载
分区完毕之后自然要进行文件系统的格式化.格式化命令mkfs(make file system)这个命令.这是个综合命令,它会去调用正确的文件系统格式化工具软件. 磁盘格式化 mkfs mke2fs m ...
- 微信小程序之使用checkbox
效果图如下: 实例代码如下:type_add.js // pages/detail_add/detail_add.js Page({ /** * 页面的初始数据 */ data: { selectDa ...
- css3实现左侧固宽,右侧随着屏幕,右侧随着屏幕变化而变化
A, ----float+calc(css3新属性计算属性)方式 <div class="Father"> <div class="LeftChildr ...