计算机网络 5.6-5.8 TCP/UDP
来看看传输层的位置
要点:
传输层是为两个应用进程提供端到端的通信
传输层的复用和分用
传输层与应用层就是端口 (传输层的应用访问点 TSP)
传输层与网络层之间就是协议字段(网络层的 NTSP)
端口(port)
一共可以有 2^16 个
服务器比作房子
而把端口比作通向不同房间的门、
端口扫描可以看好目标主机
套接字
插口 或者 套接口 socket
显得比较冗余了
先来看一下UDP协议
用户数据报协议
- 端口的复用和分用
- 差错控制技术
若果是UDP进行分片。那么只有第一个会有UDP
UDP的首部(四个字段,每个字段各占两个字节)
校验和字段:计算过程下一节介绍
UDP的数据(不讲)
UDP的差错控制方法
有一个首部校验和(只校验首部)
节约了时间(尽力而为的思想)给高层留下了数据是否可靠的问题
高层可以自己选择
发送时计算一次
接受时再计算一次
包含三个部分
首部,数据,伪首部
增加了伪首部的方法
要对完整点的通信双方的五元组的校验
计算校验和
数据长度是奇数的话 如果是偶数个就不填充了
校验和置零
反码求和再取反
DNS DHCP 都是使用了UDP协议
报文简单,实时应用
TCP协议
双方建立TCP的有限状态机
TCP不提供广播或多播的服务
TCP报文段的首部格式
前20个字节是固定的
序号
TCP传送点的报文可以看成连续的字节流
数据部分的第一个字节的序号确认号
期望收到的下一个报文段首部的 序号字段的值数据偏移(四字节为单位)
+标记位
URG: urgent 本报文中包含紧急数据
ACK : 确认号字段有效
PSH : 应尽快将报文给应用程序
RSH : 表明TCP链接出现严重错误,必须重新建立连接
SYN : (需要消耗序号)同步位
FIN :需要释放链接(也消耗序号)
窗口:允许发送方发送的数据量
校验和字段 TCP的 首部 数据 伪首部
TCP伪首部协议字段是6
- 紧急指针
在URG置1时有效
紧急数据的字节数
选项(长度可变,4字节的整数倍,MSS(TCP数据部分的最大长度): TCP报文段长度-TCP首部长度,)
TCP的链接建立过程
SYN
FIN
需要消耗
ACK不消耗
三次握手
通信双方协商报文数据载荷最大长度
MSS值表示后续数据的最大值
避免
分布式的拒绝服务攻击
攻击方式的问题就出在三次握手
SYN flood 攻击
TCP是面向链接的传输层协议
TCP链接释放的过程
TCP可靠传输
序号确认机制
若果没有差错,只是没有按序号
(1) 将不按需的报文段丢弃
(2) 先存到缓冲区 以待后用
超时重传机制
在规定的时间内没得到ACK应答,就取出来重新发送
RTO(retransfomationtimeout)
过大或者过小都不好
RTO=RTT+4*RTTD
RTT:端到端的传输时延
RTTD:传输往返时延的偏差值
RTT的更新方法,在传输层是非常困难的事情
TCP采取了一种自适应的算法
发出的时间到受到确认的时间,在加权平均一下
典型取7/8
TCP中的定时器
(1)重传定时器
在规定时间内没有受到应答就重发
(2)持续定时器
缓冲满了发一个窗口值是0的,
有了缓冲,就发窗口更新报文(然而丢了)
这下晚秋了
超时了,就发一个探寻的消息
(3)保活定时器
查看通信的另一方是否在线,一般设置2个小时
发出10个都没有应答就终止
(4)时间等待定时器
关闭后,一般设置为某一报文寿望寿命的2倍
asa
端到端的流量控制
通过选项通知对方
可以随时动态的调整窗口
由接受端控制发送端
TCP的拥塞控制机制
造成核心的拥塞
传输层的TCP当中实现的
衡量网络的拥塞程度
假定接受窗口足够大
四种拥赛控制技术
ssthresh
是为了防止因为数据过大出现拥塞
慢启动在开始的数值比较小
设定一个门限值
实例复习
题:
解答
(1)
(2)
(3)
第一个SYN
第二个SYN ACK
第三个ACK
分析的正确性
小结
计算机网络 5.6-5.8 TCP/UDP的更多相关文章
- TCP/UDP详解
转载:http://www.cnblogs.com/visily/archive/2013/03/15/2961190.html, 作者:望梅止渴 相关: HTTP协议详解 深入理解HTTP协议 T ...
- High Performance Browser Networking - TCP UDP TLS
延迟 定义和标准延迟 延迟简单地说,它是一种转移或信息包从起点到终点,所花费的时间. 延迟=发送延迟+传播延迟+处理延迟+排队延迟: Propagation delay 传播时延 传播时延这个概念.是 ...
- 三十天学不会TCP,UDP/IP网络编程-IP头格式祥述
我又来了,这篇文章还是来做(da)推(guang)介(gao)我自己的!俗话说事不过三,我觉得我下次得换个说法了,不然估计要被厌恶了,但是我是好心呐,一定要相信我纯洁的眼神.由于这两年接触到了比较多的 ...
- TCP&UDP&Socket讲解(上)
这两天我将整理TCP&UDP&Socket,大约花大家10-15分钟之间,希望本篇文章让大家对TCP使用的理解提高一个层次. 建议大家拿出纸和笔,画一下!!! 一.TCP 1. TCP ...
- 计算机网络、OSI模型、TCP/IP族
一.计算机网络分类 1.按通信距离分类: 局域网:LAN,10m-1000m,房间.校园: 城域网:MAN,10km,城市: 广域网:WAN,100km以上,国家.全球. 二.OSI(Open Sys ...
- TCP/UDP对比总结
目录 1 TCP-UDP对比 2 UDP介绍 3 TCP介绍 3.1 可靠传输的原理和实现 3.1.1 可靠传输原理 3.1.2 可靠传输实现 3.2 TCP面向连接管理 3.2.1 建立连接 3.2 ...
- 《TCP/IP - TCP/UDP》
一:概述 - 由于 IP 的传输是无状态的,IP 提供尽力服务,但并不保证数据可以到达主机. - 所以,数据的完整性需要更上层的 传输层来保证.TCP和UDP 均属于 传输层. 二:UDP - 特点 ...
- TCP/IP,三次握手四次挥手,TCP/UDP , HTTP/HTTPS
internet:通用名词,由多个计算机网络组成的网络,网络间的通信协议是任意的 Internet:专用名词,当前全球最大的开放计算机网络,采用TCP/IP协议族作为通信的规则.www万维网是广泛应用 ...
- 高性能 TCP/UDP/HTTP 通信框架 HP-Socket v4.1.1
HP-Socket 是一套通用的高性能 TCP/UDP/HTTP 通信框架,包含服务端组件.客户端组件和 Agent 组件,广泛适用于各种不同应用场景的 TCP/UDP/HTTP 通信系统,提供 C/ ...
- TODO:Golang语言TCP/UDP协议重用地址端口
TODO:Golang语言TCP/UDP协议重用地址端口 这是一个简单的包来解决重用地址的问题. go net包(据我所知)不允许设置套接字选项. 这在尝试进行TCP NAT时尤其成问题,其需要在同一 ...
随机推荐
- MFC中使用FLASH相关
出自http://my.oschina.net/ypimgt/blog/62573 一.准备工作 第一步:下载并安装Adobe Flash Player. 从官方网站(http://get.adobe ...
- Codeforces 442B. Andrey and Problem
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- spring_配置处理器对象、处理器映射器、处理器适配器、视图解析器
创建spring配置文件:application-context.xml. 创建处理器类 package com.lanou.demo.controller;public class BookCont ...
- 理解最短路径-Dijkstra算法
最短路径—Dijkstra算法和Floyd算法 透彻理解迪杰斯特拉算法 Dijkstra算法的使用条件:图中不存在负权边. ---------------------------有待验证------- ...
- kill 3000
杀3000端口,是作为一个web未开发人员经常遇到的事情 所以我今天就分享一下我的杀3000端口秘诀 lsof -i: 先要找到端口 node zcool 20u IPv6 0xdddbb4f6f12 ...
- Error-SQLServer:【失败】win7装SQL server2017
ylbtech-Error-SQLServer:[失败]win7装SQL server2017 1.返回顶部 1. 2018年08月15日 22:06:38 USCWIFI 阅读数:5433 版 ...
- Maven中央仓库地址大全,Maven中央仓库配置示例
< Maven 中央仓库地址大全 > 在上一篇文章中完成了 < Maven镜像地址大全 >,后来又花了时间又去收集并整理了关于 maven 远程仓库地址,并整理于此,关于 Ma ...
- hbase 聚合操作
hbase本身提供了 聚合方法可以服务端聚合操作 hbase中的CoprocessorProtocol机制. CoprocessorProtocol的原理比较简单,近似于一个mapreduce框架.由 ...
- np.random.choice的用法
np.random.choice的用法 2018年01月15日 10:18:23 qfpkzheng 阅读数:6306 标签: 自己学习 更多 个人分类: 总结 import numpy as n ...
- 设置mysql二进制日志过期时间
((none)) > show variables like 'expire_logs_days'; +------------------+-------+ | Variable_name | ...