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字节

最新文章

  1. prefix pct文件配置Xcode
  2. 通过端口 8080 连接到主机 localhost 的 TCP/IP 连接失败
  3. java内存配置
  4. nginx root && alias 文件路径配置
  5. 关于OOM那些事儿
  6. c++之路进阶——bzoj3343(教主的魔法)
  7. PS定位
  8. Hibernate报错 ** is not mapping
  9. iMac Termanel命令まとめ
  10. 操作jQuery集合搜索父元素
  11. office------------word邮件合并(word2016版)
  12. .NET之Dapper框架运用
  13. PPT分享第01季-226套多种风格模板
  14. Android 平台 Native 代码的崩溃捕获机制及实现
  15. Git_GitHub-使用过程遇到的问题——坑(持续添加)
  16. RAMOS和SSD对比
  17. vue中的jsx
  18. 浅谈分词算法(3)基于字的分词方法(HMM)
  19. PYTHON-模块 sys os random shutil-练习
  20. Spring Boot REST(一)核心接口

热门文章

  1. 10 分钟了解 Actor 模型
  2. web自动化测试-自动化测试模型介绍
  3. MySQL备份的三中方式
  4. mssql提权
  5. js傻瓜式制作电子时钟
  6. SVN 常用 查看日志
  7. sdcf day4 qaq模拟赛总结
  8. 计蒜客——Reversion Count
  9. 记录一次SpringBoot实现AOP编程
  10. 第12组 Beta冲刺(3/5)