文档章节

重新认识网络通信协议

 最胖的瘦子
发布于 04/20 09:58
字数 1112
阅读 8
收藏 0

OSI网络分层

  1. 应用层

http, smtp,pop3这些都属于应用层协议

为用户的应用程序提供服务

  1. 表示层

确保一个系统的应用层发送的信息被另一个系统的应用层接收到

  1. 会话层

通过传输层建立数据传输的通道

  1. 传输层

定义了传输协议和网络端口(www和80端口)

  1. 网络层

为处于不同地理位置的两台主机提供链接和路径选择

  1. 数据链路层

定义如何让格式化数据进行传输,以及如何让控制对物理介质的访问

  1. 物理层

物理设备标准,网线接口、光纤接口

TCP/IP协议

  1. 应用层(OSI中的应用层、表示层、会话层)

应用层面向不同的网络应用引入不同的网络协议,有基于TCP的,例如文件传输(FTP)、虚拟终端协议(TELNET)、超文本链接协议(HTTP),同样也有基于UDP协议的,例如域名解析服务(DNS)。

  1. 传输层

传输层的功能是使源端主机和目标端主机可以进行对等的会话。定义了两种协议1、传输控制协议(TCP)2.用户数据报协议(UDP)

  1. 网络互连层

定义了分组和互联协议,即IP协议

  1. 主机到网络层(OSI中的数据链路层、物理层)

 

何为IP协议

用于将多个包交换网络连接起来的,它在源地址和目的地址之间传输一种称为数据包的东西,它还能提供将数据大小的重新组装功能,以适应不同网络对包大小的要求

 

 

 

何为TCP协议

TCP协议最核心的就是三次握手过程,断开连接的四次分手过程

 

三次握手协议

  1. 客户端发送一个随机序列码(1000),发起连接,并等待服务端相应
  2. 服务端收到客户端请求后,发送自己初始序列码(1234),并将客户端的随机序列码加一后(1001)发还给客户端
  3. 客户端接收到服务端响应后,将服务端的初始序列码加一(1235)后,作为最终应答发还给服务端,此时链接建立成功

 

四次挥手协议

首先,挥手协议无论客户端还是服务端,均可主动发起

主动方、被动方由发起close命令来区分,并非严格规定挥手是由客户端还是服务端发起

 

  1. 主动方发起一个挥手,发送一个FIN,然后关闭主动方与被动方的数据传输,进入FIN_WAIT状态
  2. 被动方接收到到主动方发送的FIN后,发送一个ACK相应给主动方,此时被动方进入CLOSE_WAIT状态
  3. 被动方发送一个FIN给主动方,用于关闭被动方与主动方的数据传输,此时进入LAST_ACK状态
  4. 主动方收到FIN后,进入TIME_WAIT状态,接着发送一个ACK确认给被动方,然后进入CLOSE状态,完成四次挥手

 

一次完整的http请求是如何实现的

  1. 首先浏览器和服务端建立TCP的三次握手协议
  2. 浏览器向服务器发送一个命令,http://www.baidu.com,并且发送完成一个再发送一个空白行告知服务端发送信息结束
  3. 客户端发送完毕以后,服务端会向客户端会送应答,一般就是我们在header头中常见的状态码,例如200,404,500等
  4. 然后服务端根据客户端的请求地址相应具体的文档或相应结果
  5. 当服务端相应完结果后,会按照约定的conten-type,向客户端把信息发送过来
  6. 当服务端把信息发送给客户端后,原则上会将tcp请求关闭。若是connection若是设置为keep-alive(长链接的时候都是开启的)。这样的话tcp会始终保持

 
 

本文转载自:https://blog.csdn.net/xiaodingqq/article/details/80142536

粉丝 4
博文 34
码字总数 19079
作品 0
杭州
私信 提问
细说API - 重新认识RESTful

如果你是一个客户端、前端开发者,你可能会在某个时间吐槽过后端工程师的API设计,原因可能是文档不完善、返回数据丢字段、错误码不清晰等。如果你是一个后端API开发者,你一定在某些时候感到...

f8f814630cfc
01/16
0
0
基于 Netty 的网络通信框架 - SOFABolt

SOFABolt 是蚂蚁金融服务集团开发的一套基于 Netty 实现的网络通信框架。 为了让 Java 程序员能将更多的精力放在基于网络通信的业务逻辑实现上,而不是过多的纠结于网络底层 NIO 的实现以及处...

匿名
2018/04/19
6.3K
3
网络编程引入

Socket编程 一、网络基础知识 两台计算机要通过网络进行通信必备条件a、唯一的标识IP地址 b、需要共同的语言--协议 c、辨别不同的应用程序--端口号。 1.IP地址 每台计算机的唯一标识,用来区...

Favour
2016/06/02
38
0
Android网络编程(一):TCP/IP协议基础栈结构

Android开发,或者任何的互联网相关的服务,总免不了会使用到网络通信,而Android开发中,现今有很多优秀的框架,比如Volley、Okhttp3、Retrofit等,使用起来很方便,但是还是有必要了解一下...

C6C
2017/05/02
0
0
android ------- TCP/IP

TCP/IP 是针对因特网的通信协议。 什么是 TCP/IP? TCP/IP 是供已连接因特网的计算机进行通信的通信协议。 TCP/IP 指传输控制协议/网际协议 (Transmission Control Protocol / Internet Prot...

切切歆语
2018/04/20
28
0

没有更多内容

加载失败,请刷新页面

加载更多

《JAVA核心知识》学习笔记 (19. 数据库)

19.1.1. 存储引擎 19.1.1.1. 概念 数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、 更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧...

Shingfi
6分钟前
1
0
三分钟手操自己的yum源

本文章原创首发公众号:编程三分钟 上次就想手操yum源了,考虑到有的朋友没接触过,直接写成了yum源的科普,活活憋了我一个星期,现在我们快快开始。 什么情况下我们需要搭建一个仓库呢? 记...

编程三分钟
10分钟前
3
0
一起来学Java8(二)——Lambda表达式

Lambda简介 什么是Lambda表达式,简单的说是一种匿名函数表达方式。因此Lambda表达式本质是个函数,只不过没有函数名称。 Lambda表达式具有以下特点: 匿名,它没有函数名称 本质是个函数,除...

猿敲月下码
12分钟前
3
0
排序算法之希尔排序

1、介绍。 希尔排序(Shell's Sort)是插入排序的一种又称“缩小增量排序”(Diminishing Increment Sort),是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。该方法因D...

daxiongdi
20分钟前
2
0
log4j2入门hello world

1.什么是log4j2 (1)log4j log4j是apache的一个开源项目,表示log for java.是一个日志工具,可以将日志信息输出到文件,控制台等其他地方 ,还可以定义日志的输出格式,另外还有日志级别的区分,可...

Blueeeeeee
23分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部