计算机网络基础之运输层

运输层

概述

  • 运输层向它上面的应用层提高通信服务
  • 当网络的边缘部分中的两个主机使用网络的核型部分的功能进行端到端的通信时,只有主机的协议栈才有运输层,而网络和兴部分中的路由器在转发分组时都只用到下三层的功能。

  • 网络层是为主机之间提供逻辑通信,而运输层为应用进程之间提供端到端的逻辑通信。运输层有复用和分用的功能。
  • -

应用层所有的应用进程都可以通过运输层再传送到IP层(网络层),这就是复用。运输层从IP层收到数据后必须交付指明的应用进程,就是分用

  • 通过协议端口号将报文交付给特定的进程,这就是说,虽然通信的终点是应用进程 ,但我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就有TCP来完成。

UDP和TCP的首部格式中都有源端口和目的端口。

服务器端常用的端口号

应用进程 FTP TELNET SMTP DNS TFTP HTTP SNMP SNMP(trap)
熟知端口号 21 23 25 53 69 80 161 162

运输层协议

TCP对应的协议:

(1) FTP:定义了文件传输协议,使用21端口。

(2) Telnet:远程登录协议,一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。

(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。

(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。

(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

UDP对应的协议:

(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。

(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

(3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

(4)NFS、BOOTP

UDP概述

用户数据报协议UDP只在IP的数据报服务之上增加了很少一点的功能,这就是复用和分用以及差错检测的功能。

1. UDP主要特点:

  1. UDP是无连接的,因此减少了开销和发送数据之前的时延
  2. UDP使用尽最大努力交付,不保证可靠交付,因此主机不需要维持复杂的链接状态表
  3. UDPshi面向报文的。即一次交付一个完整的报文。因此,应用程序必须选择合适大小的报文。若报文太长,UDP把它交付给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率。反之,若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,这也降低了IP层的效率。
  4. UDP没有拥塞控制。因此网络出现的拥塞不会使源主机的发送速率降低。
  5. UDP支持一对一,一对多,多对一和多对多的交互通信。
  6. UDP的首部开销小,只有8个字节,比TCP的20个字节的首部短。

2. UDP首部格式

3. 端口分用

当运输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交最后的终点-应用进程。
![这里写图片描述](http://img.blog.csdn.net/20160409150220676)
如果接收方UDP发现收到的报文中的目的端口号不正确(即不存在对应于该端口号的应用进程),就丢弃该报文,并由网际控制报文协议ICMP发送“端口不可达”差错报文给发送放。

4. 计算检验和

在计算检验和时,要在UDP用户数据报之前增加12个字节的伪首部。所谓“伪首部”只是在计算检验和时,临时添加在UDP用户数据报前面,得到一个临时的UDP用户数据报。检验和就是根据这个临时的UDP用户数据报来计算的。伪首部既不向下传送也不向上递交,而仅仅是为了计算检验和。

IP数据报的检验和只检验IP数据报的首部,但UDP的检验和时把首部和数据部分一起检验。

具体的计算过程还是看书吧

TCP

TCP概述

  • TCP提供一种面向连接的、可靠的字节流服务 。
  • TCP提供可靠交付,无差错,不丢失,不重复,且按序到达。
  • 提供全双工通信,TCP连接的两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。
  • 在一个TCP连接中,仅有两方一对一进行彼此通信。广播和多播不能用于TCP
  • TCP使用校验和,确认和重传机制来保证可靠传输
  • TCP使用累积确认
  • TCP使用滑动窗口机制来实现流量控制,通过动态改变窗口的大小进行拥塞控制

三次握手与四次挥手

三次握手

所谓三次握手(Three-way Handshake),是指建立一个 TCP 连接时,需要客户端和服务器总共发送3个包。

三次握手的目的是连接服务器指定端口,建立 TCP 连接,并同步连接双方的序列号和确认号,交换 TCP 窗口大小信息。在 socket 编程中,客户端执行 connect() 时。将触发三次握手。

  • 第一次握手(SYN=1, seq=x):

    客户端发送一个 TCP 的 SYN 标志位置1的包,指明客户端打算连接的服务器的端口,以及初始序号 X,保存在包头的序列号(Sequence Number)字段里。

    发送完毕后,客户端进入 SYN_SEND 状态。

  • 第二次握手(SYN=1, ACK=1, seq=y, ACKnum=x+1):

    服务器发回确认包(ACK)应答。即 SYN 标志位和 ACK 标志位均为1。服务器端选择自己 ISN 序列号,放到 Seq 域里,同时将确认序号(Acknowledgement Number)设置为客户的 ISN 加1,即X+1。

    发送完毕后,服务器端进入 SYN_RCVD 状态。

  • 第三次握手(ACK=1,ACKnum=y+1)

    客户端再次发送确认包(ACK),SYN 标志位为0,ACK 标志位为1,并且把服务器发来 ACK 的序号字段+1,放在确定字段中发送给对方,并且在数据段放写ISN的+1

    发送完毕后,客户端进入 ESTABLISHED 状态,当服务器端接收到这个包时,也进入 ESTABLISHED 状态,TCP 握手结束。

三次握手的过程的示意图如下:

四次挥手

TCP的连接的拆除需要发送四个包,因此称为四次挥手(Four-way handshake),也叫做改进的三次握手。客户端或服务器均可主动发起挥手动作,在 socket 编程中,任何一方执行 close() 操作即可产生挥手操作。

  • 第一次挥手(FIN=1,seq=x)

假设客户端想要关闭连接,客户端发送一个 FIN 标志位置为1的包,表示自己已经没有数据可以发送了,但是仍然可以接受数据。

发送完毕后,客户端进入 FIN_WAIT_1 状态。

  • 第二次挥手(ACK=1,ACKnum=x+1)

服务器端确认客户端的 FIN 包,发送一个确认包,表明自己接受到了客户端关闭连接的请求,但还没有准备好关闭连接。

发送完毕后,服务器端进入 CLOSE_WAIT 状态,客户端接收到这个确认包之后,进入 FIN_WAIT_2 状态,等待服务器端关闭连接。

  • 第三次挥手(FIN=1,seq=y)

服务器端准备好关闭连接时,向客户端发送结束连接请求,FIN 置为1。

发送完毕后,服务器端进入 LAST_ACK 状态,等待来自客户端的最后一个ACK。

  • 第四次挥手(ACK=1,ACKnum=y+1)

客户端接收到来自服务器端的关闭请求,发送一个确认包,并进入 TIME_WAIT状态,等待可能出现的要求重传的 ACK 包。

服务器端接收到这个确认包之后,关闭连接,进入 CLOSED 状态。

客户端等待了某个固定时间(两个最大段生命周期,2MSL,2 Maximum Segment Lifetime)之后,没有收到服务器端的 ACK ,认为服务器端已经正常关闭连接,于是自己也关闭连接,进入 CLOSED 状态。

四次挥手的示意图如下:

SYN攻击

  • 什么是 SYN 攻击(SYN Flood)?

在三次握手过程中,服务器发送 SYN-ACK 之后,收到客户端的 ACK 之前的 TCP 连接称为半连接(half-open connect)。此时服务器处于 SYN_RCVD 状态。当收到 ACK 后,服务器才能转入 ESTABLISHED 状态.

SYN 攻击指的是,攻击客户端在短时间内伪造大量不存在的IP地址,向服务器不断地发送SYN包,服务器回复确认包,并等待客户的确认。由于源地址是不存在的,服务器需要不断的重发直至超时,这些伪造的SYN包将长时间占用未连接队列,正常的SYN请求被丢弃,导致目标系统运行缓慢,严重者会引起网络堵塞甚至系统瘫痪。

SYN 攻击是一种典型的 DoS/DDoS 攻击。

  • 如何检测 SYN 攻击?

检测 SYN 攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源IP地址是随机的,基本上可以断定这是一次SYN攻击。在 Linux/Unix 上可以使用系统自带的 netstats 命令来检测 SYN 攻击。

  • 如何防御 SYN 攻击?

SYN攻击不能完全被阻止,除非将TCP协议重新设计。我们所做的是尽可能的减轻SYN攻击的危害,常见的防御 SYN 攻击的方法有如下几种:

  1. 缩短超时(SYN Timeout)时间
  2. 增加最大半连接数
  3. 过滤网关防护
  4. SYN cookies技术

TCP报文段首部格式

TCP虽然是面向字节流的,但是TCP传送的数据单元是报文段。

TCP报文段首部的前20个字节是固定的。后面4n(n是整数)字节是根据需要而增加的选项。因此TCP首部的最小长度是20字节。

1.源端口和目的端口:各占2个字节,通过端口实现分用功能。

2.序号:占4个字节。TCP是面向字节流的。在一个TCP连接中传送的字节流中的每一个字节都按顺序编号。

3.确认号: 占4个字节,是期望收到对方下一个报文的第一个数据字节的序号。若确认号=N,则表明,到序号N-1为止的所有数据都已正确收到。

4.数据偏移:4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。这个字段实际上是指出TCP报文段的首部长度。由于首部中还有长度不确定的选项字段,因此数据偏移字段是必要的。4位二进制数能表示的最大数是15,因此数据偏移最大值是60字节,这也是TCP首部的最大长度(即选项长度不能超过40字节)

5.保留: 占6位,保留为今后使用,但目前应置为0;

以下6个控制位说明本报文段的性质

6. 紧急URG: 当URG=1时,,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送,而不要按原来的排队顺序来传送。

7.确认ACK: 仅当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。TCP规定,在连接建立后所有传送的报文段都必须把ACK置1。

8.推送PSH:当两个应用进程进行交互式的通信时,有时在一端的应用进程希望在键入一个命令后立即就能够收到对方的响应。在这种情况下,TCP就可以使用推送操作。这时,发送方TCP把PSH置为1,并立即创建一个报文段发送出去。接收方TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。

9.复位RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接。RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。

10. 同步SYN:在连接建立时用来同步序号。当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在响应的报文段中使用SYN=1和ACK=1.因此SYN置为1表示这是一个连接请求或连接接受报文。

11.终止FIN:用来释放一个连接。当FIN=1时,说明此报文段的发送方的数据已发送完毕,并要求释放运输连接。

12. 窗口: 占2个字节。窗口指的是发送本报文段的一方的接收窗口(而不是自己的发送窗口)。窗口告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。总之,窗口字段明确指出了现在允许对方发送的数据量。窗口值是经常在动态变化着。

13.检验和: 占2个字节。检验和字段检验的范围包括首部和数据这两部分。和UDP用户数据报一样,在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。

14.紧急指针:占2个字节。紧急指针仅在URG=1时才有意义,它指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。因此,紧急指针指出了紧急数据的末尾在报文段中的位置。注意,即使窗口为零时也可发送紧急数据。

15.选项:长度可变,最长可达40字节。

TCP的流量控制

TCP的拥塞控制

时间: 2024-11-13 06:51:33

计算机网络基础之运输层的相关文章

socket编程之一:计算机网络基础

在开始学习网络之前先复习下计算机网络基础吧. 鲁迅说,天下文章一大抄,看你会炒不会炒,基础知识就抄抄书吧. 一 分层模型 1 为什么分层 为了简化网络设计的复杂性,通讯协议采用分层结构,各层协议之间既相互独立又相互高效的协调工作. 对于复杂的通信协议,其结构应该是采用层次的.分层的协议可以带来很多便利: 分层的好处有: a> 灵活性好:当任何一层发生变化时,只要层间接口关系保持不变,则在这层以上或以下各层均不受影响. 此外,对某一层提供的服务还可进行修改.当某层提供的服务不再需要时,甚至可以将这

计算机网络基础与TCP/IP

计算机网络基础知识复习汇总:计算机网络基础知识复习 HTTP协议的解析:剖析 HTTP 协议 一个系列的解析文章: TCP/IP详解学习笔记(1)-- 概述 TCP/IP详解学习笔记(2)-- 数据链路层 TCP/IP详解学习笔记(3)-- IP:网际协议 TCP/IP详解学习笔记(4)-- ARP 和 RARP TCP/IP详解学习笔记(5)-- ICMP:internet 控制报文协议 TCP/IP详解学习笔记(6)-- IP选路 TCP/IP详解学习笔记(7)-- 初识运输层 TCP/IP

计算机网络基础教程---强烈推荐!来自锐捷官方网站

一.计算机网络基础教程 说明:每个教程的时间大约为6分钟,以问题为导向,以项目为驱动.1.第一章 IPV4地址介绍 http://www.ruijie.com.cn/fw/zxpx/4092.第二章 TCP/IP协议簇介绍 http://www.ruijie.com.cn/fw/zxpx/4103.第三章 ARP协议工作原理 http://www.ruijie.com.cn/fw/zxpx/4114.第四章 二层交换机工作原理 http://www.ruijie.com.cn/fw/zxpx/4

《计算机网络基础》考试大纲

一.参考书目: <计算机网络技术与应用(第2版)>,段标.张玲主编,电子工业出版社,出版时间:2011年12月. 二.考试形式:闭卷,考试时间90分钟 三.考试内容和要求 (一)考试要求 1.计算机网络理论知识 掌握计算机网络的定义.计算机网络的组成.功能与应用 掌握计算机网络的分类.常见的网络拓扑结构及特点 掌握模拟信号及数字信号的特点,单工.半双工.全双工通信方式的原理,数据交换技术的基本原理及特点 掌握基本传输媒体的类型与特点 掌握网络体系结构的概念,网络协议的概念及构成要素 掌握OSI

计算机网络基础学习笔记——理论

历史:第一代:50年代:(多台)终端(terminal)-->计算机(host) 缺点:1.主机负荷重,效率低.  2.终端速率低,线路利用低,费用高. 60年代:通信控制处理机CCP(communication control processer)或FET(front end processor)    集中器.第二代:60年代末:计算机--计算机   1969年,美国国防部国防高级研究计划署(简称ARPA Advanced Research Project Agency)试验.   1972

[Network] 计算机网络基础知识总结

[Network] 计算机网络基础知识总结 阅读目录 1. 网络层次划分 2. OSI七层网络模型 3. IP地址 4. 子网掩码及网络划分 5. ARP/RARP协议 6. 路由选择协议 7. TCP/IP协议 8. UDP协议 9. DNS协议 10. NAT协议 11. DHCP协议 12. HTTP协议 13. 一个举例 计算机网络学习的核心内容就是网络协议的学习.网络协议是为计算机网络中进行数据交换而建立的规则.标准或者说是约定的集合.因为不同用户的数据终端可能采取的字符集是不同的,两

转帖--计算机网络基础知识大总汇 https://www.jianshu.com/p/674fb7ec1e2c?utm_campaign=maleskine&amp;utm_content=note&amp;utm_medium=seo_notes&amp;utm_source=recommendation

计算机网络基础知识大总汇 龙猫小爷 关注 2016.09.14 23:01* 字数 12761 阅读 30639评论 35喜欢 720 一.什么是TCP/IP 网络和协议 1.     TCP/IP是一类协议系统,它是一套支持网络通信的协议集合.网络是计算机或类似计算机的设备之间通过常用的传输介质进行通信的集合. 2.     网络协议就是一套通用规则,用来帮助定义复杂数据传输的过程.数据传输从一台计算机上的应用程序开始,通过计算机网络硬件,经过传输介质到正确目的地,然后上传到目的地计算机网络硬

计算机网络基础——OSI七层网络模型

计算机网络基础——OSI七层网络模型 OSI的是什么: 开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写为 OSI),简称为OSI模型(OSI model),一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架.定义于ISO/IEC 7498-1. OSI模型分为七层,建立七层模型的主要目的是为兼容不同的网络,通过将服务.接口.协议三个概念进行区分,使得不同系统不同的网络能实现可靠通

面试带你飞:这是一份全面的 计算机网络基础 总结攻略

前言 计算机网络基础 该是程序猿需掌握的知识,也是面试过程中常常考察的内容,但往往会被忽略 今天,我将献上一份详细 & 清晰的计算机网络基础 学习指南,涵盖 TCP / UDP协议.Http协议.Socket等,希望你们会喜欢. 目录 1. 计算机网络体系结构 1.1 简介 定义 计算机网络的各层 + 其协议的集合 作用 定义该计算机网络的所能完成的功能 1.2 结构介绍 计算机网络体系结构分为3种:OSI体系结构.TCP / IP体系结构.五层体系结构 OSI体系结构:概念清楚 & 理念