传输层协议

1、TCP协议介绍及报文格式

2、TCP三次握手三次挥手

3、UDP协议介绍

1、传输层有两个协议:TCP(传输控制协议)  UDP(用户数据协议) 。

TCP是面向连接的,可靠的进程到进程通信的协议,它提供全双工服务(数据可在同一时间双向传输)。

TCP将若干字节构成一个分组,叫报文段,报文段封装在ip数据中。下面来个图看的明显一点:

序号:        发送端为每个字节进行编号,便于接收端正确重组
确认号:    用于确认发送端的信息
窗口大小:用于说明本地可接受数据段的数目,窗口大小是可变的
SYN:       同步序号位,TCP需要建立连接时将该值设为1
ACK:       确认序号位,当该位为1时,用于确认发送方的数据
FIN:         当TCP断开连接时该位为1。

 

2、TCP三次握手与挥手  :看图解释

三次握手即建立关系。可以这么说 a:pc1向pc2发送报文请求连接(其中seq是序号)。b:pc2收到请求并向pc1发送确认信息和连接请求(ACK是确认pc1请求,SYN传输是双向的pc2也要请求连接pc1)。

c:pc1收到并向pc2发送确认信息(ACK是确认pc2请求的信息)。

 

 

四次挥手即断开连接。a:pc1向pc2发送FIN和ACK位置为1的TCP报文(我要断开数据了,我关闭TCP连接了,等待你pc2的确认)。b:pc2收到后,发送ACK报文表示自己收到了(PC2 收到连接断开报文段后即发出确认报文段(ACK=1),此时的 TCP 处于半关闭 状态,PC1 到 PC2 的连接断开。PC1 收到 PC2 的确认后,等待 PC2 发出的连接断开报文段)c:如果pc2也想断开连接就要像pc1一样发送FIN报文。等待pc1确认。d:PC1 收到 FIN 之后,一样发送一个 ACK 报文作为应答,以确保 PC2 收到自己的 ACK 报文之后才会关闭连接,待 PC2 收到 ACK 报文之后,关闭连接。

   在TCP断开连接过程中有一个半关闭,半连接的概念。半关闭:当TCP链接中A向B发送FIN请求关闭,另一端B回应ACK之后,并没有立即发送FIN给A,A处于半连接(半开关)状态,此时A可以接收B发送的数据,但是A已经不能再向B发送数据。半连接:发生在TCP三次握手中,如果A向B发起链接,B也按照正常情况响应了,但是A不进行三次握手,这就是半连接。半连接攻击(SYN攻击):半连接会造成B分配的内存资源就一直这么耗着,直到资源耗尽。  

补充:TCP的常见端口协议放图:

端口 协议 说明
21 FTP FTP服务器所开放的控制端口
23 TELNET 用于远程登录,可以远程控制管理目标计算机
25 SMTP SMTP服务器开放的端口,用于发送邮件
80 HTTP 超文本传输协议
110 POP3 用于邮件的接收

3、UDP协议介绍  UDP是一个无连接,不保证可靠性的传输层协议,也就是说发送端不关心发送的数据是否到达主机,是否出错,收到数据的主机也不会告诉发送方是否收到了数据,它是否可靠全靠上层协议来保障。但是他也有优点,花费开销小  ,首部结构简单。UDP报文格式如图:

源端口号(16) 目标断口号(16)
UDP长度(16) UDP校验和(16)

UDP长度:该字段保存了UDP首部的长度跟数据的长度之和    ,   校验和用来完成对UDP数据的差错校验,它是UDP协议提供唯一的可靠机制

  给大家列举一下常见的UDP端口号,放图:

端口 协议 说明
69 TFTP 简单文件传输协议
111 RPC 远程过程调用
123 NTP 网络时间协议

稳住,传输层里的TCP与UDP协议的更多相关文章

  1. 传输层上的TCP和UDP

    参考: 知乎 传输层概述 “三次握手,四次挥手”你真的懂吗? 传输层上的TCP和UDP TCP/IP协议是一个协议簇.里面包括很多协议的,UDP只是其中的一个, 之所以命名为TCP/IP协议,因为TC ...

  2. 第8章 传输层(1)_TCP/UDP协议的应用场景

    1. 传输层的两个协议 1.1 TCP和UDP协议的应用场景 (1)TCP协议:如果要传输的内容比较多,需要将发送的内容分成多个数据包发送.这就要求在传输层用TCP协议,在发送方和接收方建立连接,实现 ...

  3. TCP/IP 协议图--传输层中的 TCP 和 UDP

    TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP. TCP 是面向连接的.可靠的流协议.流就是指不间断的数据结构,当应用程序采用 TCP 发送消息时,虽然可以保证发送的顺序,但 ...

  4. 网络七层模型及TCP、UDP,一次HTTP请求都发生了什么

    一.七层网络模型 http协议运行在应用层   二.TCP-UDP TCP.UDP协议的区别 一次Http 请求,这个过程都发生了什么 TCP 协议如何保证可靠传输 HTTP和HTTPS的区别 TCP ...

  5. 【知识强化】第五章 传输层 5.3 TCP协议

    这节课我们来学习一下TCP协议的特点以及TCP报文段的格式. 首先呢我们来看一下TCP有哪些特点呢.之前我们说过TCP它是一个比较可靠的面向连接的协议,所以最主要的特点它是可以面向连接的一种传输层协议 ...

  6. 软件开发架构,网络编程简介,OSI七层协议,TCP和UDP协议

    软件开发架构 什么是软件开发架构 1.软件架构是一个系统的草图. 2.软件架构描述的对象是直接构成系统的抽象组件. 3.各个组件之间的连接则明确和相对细致地描述组件之间的通讯. 4.在实现阶段,这些抽 ...

  7. 深入浅出TCP与UDP协议

    深入浅出TCP与UDP协议 网络协议是每个前端工程师的必修课,TCP/IP协议族是一系列网络协议的总和,而其中两个具有代表性的传输层协议,分别是TCP与UDP,本文将介绍这两者以及他们之间的区别. 一 ...

  8. 基于TCP与UDP协议的socket通信

    基于TCP与UDP协议的socket通信 C/S架构与初识socket 在开始socket介绍之前,得先知道一个Client端/服务端架构,也就是 C/S 架构,互联网中处处充满了 C/S 架构(Cl ...

  9. TCP、UDP协议间的区别(转)

    一.TCP/IP协议是一个协议簇.里面包括很多协议的.UDP只是其中的一个.之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了. TCP/IP协议集包括应用层,传输层 ...

随机推荐

  1. 自学java,如何快速地找到工作

    本人最近一直在帮零基础的java开发者提升能力和找工作,在这个过程中,发现零基础的java程序员,在自学和找工作时,普遍会出现一些问题,同时在实践过程中,也总结出了一些能帮零基础java开发尽快提升能 ...

  2. TortoiseGit使用ssh-keygen生成的私钥

    1.说明 使用TortoiseGit自带的PuTTY Key Generator工具, 把ssh-keygen生成的私钥转换为Putty使用的.ppk文件, 然后在拉取Git代码时, 加载对应的.pp ...

  3. Xshell 6 首次连接虚拟机 CentOS 7.6报错:/usr/bin/xauth: file /root/.Xauthority does not exist

    使用 Xshell 6 首次连接虚拟机 CentOS 7.6 出现这样的提示: /usr/bin/xauth: file /root/.Xauthority does not exist 解决: 只需 ...

  4. c# - 实体类和有参无参构造函数的具体写法

    1.前言 与Java基本一模一样,但是rider貌似没有意见生成get和set方法的指令 2.操作 (1)目录 实体源码 namespace ConsoleApp1.entity { public c ...

  5. 第10组 Beta冲刺 (4/5)

    1.1基本情况 ·队名:今晚不睡觉 ·组长博客: https://www.cnblogs.com/cpandbb/p/14018650.html ·作业博客:https://edu.cnblogs.c ...

  6. Servlet简单实现开发部署过程

    注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6512008683445027331/ 主要是从下面三个步骤实现我们的预期: (1)构建开发环境: (2)开发Ser ...

  7. SYCOJ411

    题面描述 MasMas在面试某大厂时遇到了一道有趣的题.面试官要求MasMas写一个程序找出几个数中,出现次数为奇数的那个数.MasMas抓耳挠腮,请你帮帮他. 输入描述 第一行输入一个数nn (1 ...

  8. 使用医学影像开源库cornerstone.js解析Dicom图像显示到HTML中

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. GNU C字节对齐__attribute__((aligned(n))) #pragma pack(n)

    在阅读gnu软件c源代码时,经常会遇到字节对齐相关操作,比如uboot命令相关的代码中,会遇到__attribute__((aligned(n)))扩展关键字,#pragma pack(n)预处理指令 ...

  10. redis 入门使用

     一.Redis 数据类型及结构特点 Redis 最常见的5中数据结构有 String(字符串),List(列表),Set(集合),Hash(散列),Sorted Sets (有序集合),下表简单总结 ...