网络--三次握手

一. 体系结构

由高到低

  1. OSI七层体系结构
  • 应用层
  • 表示层
  • 会话层
  • 运输层
  • 网络层
  • 数据链路层
  • 物理层
  1. TCP/IP四层体系结构
  • 应用层(各种应用协议如TELNET, FTP, SMTP等)
  • 运输层(TCP或者UDP
  • 网际层(IP
  • 网络接口层(数据链路层,物理层)
  1. 五层协议的体系结构
  • 应用层
  • 运输层
  • 网络层
  • 数据链路层
  • 物理层

二. 各层介绍

1. 应用层:

应用层是体系结构中的最高层,直接为用户的应用进程(正在运行的程序)提供服务 。在因特网中的应用层协议很多,如支持万维网应用的HTTP协议,支持文件传输的FTP协议,支持电子邮件的SMTP协议等等。

2. 运输层:

运输层的任务是负责向两个主机中进程之间的通信提供服务。由于一个主机可同时运行多个进程,因此运输层有复用分用的功能。复用就是多个应用层进程可以同时使用下面运输层的服务,分用则是运输层把收到的信息分别交付给上面应用层中的相应的进程


运输层主要使用两种协议:

  • 传输控制协议 TCP(Transmission Control Protocol)----面向连接的,数据传输的单位是报文段(segment),能够提供可靠的交付
  • 用户数据报协议 UDP(User Datagram Protocol)----无连接的,数据传输的单位是用户数据报,不保证提供可靠的交付,只能“尽最大努力交付(best-effort delivery)“。
3. 网络层:

网络层负责为分组交换网上的不同主机提供通信服务。在发送数据的时候,网络层把运输层产生的报文段或者用户数据报封装成分组进行传送。在TCP/IP体系中,由于网络层使用IP协议,因此分组也叫IP数据报,或简称数据报


无论在哪一层传送的数据单元,习惯上都可以笼统地用“分组”来表示
因特网是一个很大的互联网,它由大量的异构网络通过路由器(router)相连接。因特网主要的网络层协议是无连接的网际协议IP和许多种路由选择协议,所以因特网的网络层也叫网际层或者IP层

4. 数据链路层:

简称链路层。两个主机之间的数据传输总是在一段一段的链路上传送的,也就是说,在两个相邻结点之间(主机和路由器之间或者两个路由器之间)传送数据是直接传送的(点对点)。这时就需要使用专门的链路层的协议。 在两个相邻结点之间传送数据时,数据链路层把网络层交下来的IP数据报组装成(frame),在两个相邻结点间的链路上“透明”的传送中的数据。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。典型的帧长是几百字节到一千多字节。


透明:某一个实际存在的事物看起来却好像不存在一样
在接收数据时,控制信息使接收端能够知道一个帧从哪个比特开始和到哪个比特结束,还使接收端能够检测到所收到的帧中有无差错,如发现错误,数据链路层就简单地丢弃这个出了差错的帧,以免继续浪费网络资源。如需改错,则交给运输层的TCP协议完成。

5. 物理层:

在物理层上传输数据的单位是比特。物理层的任务就是透明地传送比特流


在因特网所使用的各种协议中,最重要的和最著名的就是TCPIP两个协议。现在人们经常提起的TCP/IP并不一定是单指TCPIP这两个具体的协议,而是表示因特网所使用的整个TCP/IP协议族(Protocol suite)

三. TCP的运输连接管理(三次握手)

TCP运输连接的建立和释放是每一次面向连接的通信中必不可少的过程。因此,运输连接就有三个阶段:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。


TCP建立连接的过程中要解决三个问题:

  • 要使每一方能够确知对方的存在
  • 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项和时间戳选项以及服务质量等)
  • 能够对实体资源(缓存大小、连接表中的项目等)进行分配

TCP连接的建立采用客户服务器方式。主动发起连接建立的应用进程叫做客户(Client),被动等待连接建立的应用程序叫做服务器(Server)。
假设主机A运行的是TCP客户程序主机B运行TCP服务器程序。最初两端的TCP进程都处在CLOSED(关闭)状态。
A主动打开连接,而B被动打开连接。
BTCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求。然后服务器就处于LISTEN(收听)状态,等待客户的连接请求,如有,即作出反应。

过程1.

   ATCP客户进程也是首先创建传输控制模块TCB,然后向B发出连接请求报文段——>首部中的同步位 SYN = 1,同时选择一个初始序号 seq = x——>TCP客户进入SYN-SENT(同步以发送)状态。
:TCP规定,SYN报文段(即SYN = 1的报文段)不能携带数据,但要消耗掉一个序号。

过程2.

   B收到连接请求报文段后,如同意建立连接,则向A发送确认——>在确认报文段中把SYN位和ACK位都置1,确认号是ack = x+1,同时也为自己选择一个初始序号seq = y。(:该确认报文段也不能携带数据,但同样要消耗掉一个序号。)——>这时,TCP服务器进程进入SYN-RCVD(同步收到)状态。

过程3.

   TCP客户进程收到B的确认后,还要向B给出确认。——>确认报文段的ACK置1,确认号ack = y+1,而自己的序号seq = x + 1(:TCP规定,ACK报文段可以携带数据,但如果不携带数据则不消耗序号,在这种情况下,下一个数据报文段的序号仍是seq = x +1。)——>这时,TCP连接已经建立,A进入ESTABLISHED(已建立连接)状态。
   当B收到A的确认后也进入ESTABLISHED状态。

上面给出的连接建立过程叫做三次握手(three-way handshake),或三次联络

问题:

为什么客户主机A还要发送一次确认呢?

   主要是为了防止已失效的连接请求报文段突然又传送到了服务器主机B
   假定A发出连接请求,但因连接请求报文丢失而未收到确认,于是A再重传一次连接请求,后来收到了确认,建立了连接,数据传输完毕后就释放了连接。这个过程中,A共发送了两个请求报文段,其中第一个丢失,第二个到达了B
   于是就可能有“已失效的连接请求报文段产生”:假定一种异常的情况,即A发出的第一个连接请求报文段并没有丢失,而是在某些网络结点长时间的滞留了,以致延误到第二个请求报文段连接释放以后的某个时间才到达B。本来这是一个已失效的报文段。但B收到此失效的连接请求报文段后,就误以为A又一次发出了一次新的连接请求,于是就向A发送确认报文段,同意建立连接请求。假如不采用三次握手,那么只要B发出确认,新的连接就建立了。
   由于现在A并没有发出建立连接的请求,所以不会理睬B的确认,也不会向B发送数据,但是B却以为新的运输连接已经建立了,并一直等待A发来数据。于是,B的许多资源就这样被白白浪费了。
   采用三次握手,A 不会向 B 的确认发出确认,B由于收不到确认,就知道A并没有要求要建立连接。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 195,898评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,401评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,058评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,539评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,382评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,319评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,706评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,370评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,664评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,715评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,476评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,326评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,730评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,003评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,275评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,683评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,877评论 2 335

推荐阅读更多精彩内容

  • 本书结构是自顶向下的,所以请按下列顺序阅读: 1.计算机网络自顶向下--应用层2.计算机网络自顶向下--运输层3....
    牛富贵儿阅读 2,665评论 0 3
  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,042评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,028评论 6 174
  • 18.1 引言 TCP是一个面向连接的协议。无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本章将...
    张芳涛阅读 3,324评论 0 13
  • 天空中,是一片白云夹杂着乌云,抬头,想起儿时,我还是反穿着解放牌球鞋,扎着羊角辫的小女孩儿,我仰着脖子,坐在院子里...
    诺游阅读 280评论 0 1