网络基本协议

七层模型

参考链接:http://www.ha97.com/3215.html

     https://github.com/jawil/blog/issues/14

五层模型:  应用层、传输层、网络层、链接层、实体层

1、实体层:把电脑连接起来的物理手段,主要规定了网络的一些电气特性,负责传送0和1的电信号

2、链接层:在实体层上方,确定0和1的分组方式,主要内容有以太网协议(一组电信号构成一个数据包: 标头和数据),MAC地址(网卡),广播

3、网络层: 主机之间的通讯

  路由,网址(确定计算机所在的子网络,32位二进制组成)、IP协议,

  子网掩码:判断任意两个IP地址是否在同一子网络

  IP数据包:  包含IP地址信息,放在以太网数据包的数据里

  ARP协议:用于获取同一子网络内的主机的MAC地址

  不在同一子网络,将数据包传送到两个子网络的连接处,即网关,由网关来处理获取MAC地址

4、传输层: 端口之间的通讯

  端口:表示数据包由哪个程序使用,0~65535之间的整数,0~1023被系统占用

  UDP:UDP数据包放在IP数据包的数据部分。简单但是可靠性差,无法判断对方是否收到

  TCP:每发出一个数据包都需要确认,确保数据不回丢失,但实现困难,过程复杂,消耗资源

5、应用层

  规定邮件、网页、FTP数据的格式,这些应用程序的协议就构成了应用层

参考链接:http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html

     http://www.alloyteam.com/2016/07/httphttp2-0spdyhttps-reading-this-is-enough/

一、http

1、Hyper Text Transfer Protocol,用于服务器传输超文本到本地浏览器的传送协议,基于TCP/IP传送数据,是一个基于应用层的面向对象的协议

2、简单(协议简单),灵活(可传输任意类型的数据对象,由Content-Type标记)、无连接(每次处理一个请求然后断开)、无状态(对于事物处理没有记忆能力,后续处理需要之前的信息则必须重传)

3、request

  a: 请求行(请求类型、请求资源、HTTP协议版本)

  b: 请求头(附加信息如User-Agent,Host)

  c:  空行

  d:  请求数据

4、response

  a:  状态行(HTTP协议版本、状态码、状态消息)

  b:  消息报头(用来说明客户端使用的一些附加消息)

  c:  空行

  b:  响应正文

5、状态码

  1xx: 指示信息-- 请求已接收,继续处理

  2xx:  成功--请求已被成功接收

  3xx:  重定向--要完成请求必须更进一步的操作

  4xx:  客户端错误--请求有语法错误或者请求无法实现

  5xx:  服务器错误--服务器未能实现合法的请求

6、请求方法

  http1.0: GET、POST、HEAD

  http1.1:  OPTIONS、PUT、DELETE、TRACE、CONNECT

7、http工作原理

  a:  客户端连接到web服务器(TCP套接字连接)

  b:  发送http请求(请求行、请求头、空行、请求数据)

      通过TCP套接字客户端向web服务器发送一个文本的请求报文

  c:  服务器接收请求并返回http响应(状态行、响应头、空行、响应数据)

      web服务器解析请求,定位请求资源,服务器将资源复本写到TCP套接字,由客户端读取

  d:  释放TCP连接

      若connection模式为close,则服务器主动关闭TCP连接,客户端被动关闭连接,释放TCP连接

      ,若connection模式为keep-alive,则连接会保持一段时间,在该时间内可以继续接收请求

  e:  客户端解析HTML内容

      客户端首先解析状态行,查看请求状态码,然后解析每一个响应头,再读取响应数据HTML,                         显示在浏览器窗口

 

参考链接:https://www.cnblogs.com/ranyonsue/p/5984001.html

 

二、tcp

1、数据包大小:  

    以太网数据包(packet)的大小是固定的,最初是1518字节,后来增加到1522字节。其                  中, 1500 字节是负载(payload),22字节是头信息(head)。

               IP 数据包在以太网数据包的负载里面,它也有自己的头信息,最少需要20字节,所以 IP                 数据包的负载最多为1480字节。

               TCP 数据包在 IP 数据包的负载里面。它的头信息最少也需要20字节,因此 TCP 数据包                 的最大负载是 1480 - 20 = 1460 字节。由于 IP 和 TCP 协议往往有额外的头信息,所以                   TCP 负载实际为1400字节左右。

2、数据包编号(SEQ):

     TCP协议为每个包编号,以便接收的一方按照顺序还原 

3、数据包的组装

  组装还原由系统完成,然后根据数据包里面的端口参数转交给监听该端口的应用程序,应用程         序根据组装好的原始数据,根据http协议的Content-Length字段正确读出一段段的数据,意味         着一次TCP通信可以包括多个HTTP通信

  21:FTP,25:SMTP,80:WEB服务

4、慢启动和ACK

  开始发送的慢,然后根据丢包的情况,调整速率,不丢包就加快发送速率,丢包就降低发送速率,默认情况接收方每接收到两个TCP数据包,就要发送一个确认消息,即ACK。ACK携带两个信息:期待要收到的下一个数据包的编号和接收方的接收窗口的剩余容量

5、数据包的遗失处理

  每一个包都带有下一个数据包的编号,如果下一个数据包没有收到,那么ACK就不会变化。发送方发现收到三个连续重复的ACK,或者超时了还没有收到,就会确认包丢失,从而再次发送这个包

http://www.ruanyifeng.com/blog/2017/06/tcp-protocol.html

posted @ 2017-11-21 15:48  虹夜  阅读(195)  评论(0)    收藏  举报