HTTP—TCP/IP—SOCKET理解及浅析

TCP/IP协议和socket 当客户A 没有东西要发送时就要释放 A 这边的连接,A会发送一个报文(没有数据),其中 FIN 设置为1, 服务器B收到后会给应用程序一个信,这时A那边的连接已经关闭,即A不再发送信息(但仍可接收信息)。A收到B的确认后进入等待状态,等待B请求释放连接, B数据发送完成后就向A请求连接释放,也是用FIN=1 表示, 并且用 ack = u+1(如图), A收到后回复一个确认信息,并进入 TIME_WAIT 状态, 等待 2MSL 时间。一个协议族,比如TCP/IP,是一组不同层次上的多个协议的组合。 阅读详情

一个完整的HTTP请求的过程

此举例为抛砖引玉,引导大家进入思考状态。

当你按输入www.baidu.com ,浏览器接收到这个消息之后,浏览器根据自己的算法识别出你要访问的URL,为您展示出来搜索页面和广告,那么这些经历了哪些过程呢?

大致过程如下:

  • (1)浏览器查询 DNS,获取域名对应的IP地址; 具体过程包括浏览器搜索自身的DNS缓存、搜索操作系统的DNS缓存、读取本地的Host文件和向本地DNS服 务器进行查询等。
  • (2)浏览器获得域名对应的IP地址以后,浏览器向服务器请求建立链接,发起三次握手;
  • (3)TCP/IP链接建立起来后,浏览器向服务器发送HTTP请求;
  • (4)服务器接收到这个请求,并根据路径参数映射到特定的请求处理器进行处理,并将处理结果及相应的视图返回给浏览器;
  • (5)浏览器解析并渲染视图,若遇到对js文件、css文件及图片等静态资源的引用,则重复上述步骤并向服务器请求这些资源;
  • (6)浏览器根据其请求到的资源、数据渲染页面,最终向用户呈现一个完整的页面。

下面,我们从底到上来一层层理解这个问题。

网络参考模型

开放式系统互联通信参考模型(英语:Open System Interconnection Reference Model,缩写:OSI;简称为OSI模型)是一种概念模型,由国际标准化组织提出,一个试图使各种计算机在世界范围内互连为网络的标准框架。定义于ISO/IEC 7498-1。(摘自维基百科)

7

应用层 application layer

例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP、TLS

6

表示层 presentation layer

例如XDR、ASN.1、SMB、AFP、NCP

5

会话层 session layer

例如ASAP、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、IGMP、Winsock、BSD sockets

4

传输层 transport layer

例如TCP、UDP、RTP、SCTP、SPX、ATP、IL

3

网络层 network layer

例如IP、ICMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、X.25

2

数据链路层 data link layer

例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP

1

物理层 physical layer

例如线路、无线电、光纤

通常人们认为OSI模型的最上面三层(应用层、表示层和会话层)在TCP/IP组中是一个应用层。

由于TCP/IP有一个相对较弱的会话层,由TCP和RTP下的打开和关闭连接组成,并且在TCP和UDP下的各种应用提供不同的端口号,这些功能能够被单个的应用程序(或者那些应用程序所使用的库)增加。与此相似的是,IP是按照将它下面的网络当作一个黑盒子的思想设计的,这样在讨论TCP/IP的时候就可以把它当作一个独立的层。

TCP/IP 参考模型

4

应用层 application layer

例如HTTP、FTP、DNS (如BGP和RIP这样的路由协议,尽管由于各种各样的原因它们分别运行在TCP和UDP上,仍然可以将它们看作网络层的一部分)

3

传输层 transport layer

例如TCP、UDP、RTP、SCTP (如OSPF这样的路由协议,尽管运行在IP上也可以看作是网络层的一部分)

2

网络互连层 internet layer

对于TCP/IP来说这是因特网协议(IP) (如ICMP和IGMP这样的必须协议尽管运行在IP上,也仍然可以看作是网络互连层的一部分;ARP不运行在IP上)

1

网络访问(链接)层 Network Access(link) layer

例如以太网、Wi-Fi、MPLS等。

下面一张图更有助于你的理解

 

å¾çæ¥æºäºç¾åº¦ä¾µå 

HTTP 协议与 TCP/IP 协议

**HTTP 是 TCP/IP 参考模型中应用层的其中一种实现。**HTTP 协议的网络层基于 IP 协议,传输层基于 TCP 协议:HTTP 协议是基于 TCP/IP 协议的应用层协议。

TCP/IP 协议需要向程序员提供可编程的 API,该 API 就是 Socket,它是对 TCP/IP 协议的一个重要的实现,几乎所有的计算机系统都提供了对 TCP/IP 协议族的 Socket 实现。

Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。

  • 流格式套接字(SOCK_STREAM) 流格式套接字(Stream Sockets)也叫“面向连接的套接字”,它基于 TCP 协议,在代码中使用 SOCK_STREAM 表示。
  • 数据报格式套接字(SOCK_DGRAM) 数
网络协议——TCP/IPsockethttp socketTCP/IPHTTP 阅读详情

相关推荐

TCP/IPHttpSocket的区别

    经常在笔试、面试或者工作的时候听到这些协议,虽然以前没怎么涉及过,但至少知道这些是和网络编程密不可分的知识,作为一个客户端开发程序员,如果可以懂得网络编程的话,他的作用和能力肯定会提升一个档次,很简单,这是个信息化时代,由于网络的存在使得人与人、人与网络的联系及其地紧密,游戏联网了才好玩,音视频在线了才更好看。而且,对于一个程序员来说,懂得网络编程将使得自己的能力和价值得到更大的提升,从很多高级软件开发职位的招聘信息就可以看得出来:熟悉httpsocket等网络连接编程,了解TCP/IP协议...

Pk_zsq的专栏 1万+

httpTCP/IP协议与socket之间的区别

httpTCP/IP协议与socket之间的区别   网络由下往上分为:  www.2cto.com   物理层--                       数据链路层-- 网络层--                       IP协议 传输层--                       TCP协议 会话层-- 表示层和应用层--

gcs的博客 553

HTTPTCP/IPsocket及bluetooth-socket的整理

网络OSI七层模型 1物理层(简单理解网线)-- 2数据链路层(简单理解网卡)-- 3网络层(IP协议)-- 4传输层(TCP协议)-- 5会话层-- 6表示层(HTTP)-- 电脑/手机能够使用联网功能是因为底层实现了TCP/IP协议,可以使终端通过网络设备(网卡)建立TCP连接。TCP协议可以对上层(传输层)网络提供接口,使上层网络数据的传输建立在“无差别(不管是有线,无线,局域网,广域网等)”的网络之上。 在建立TCP/IP连接之前,需要进行三次确认后,客户端与服务器才正式开始传送数据。理想状态下

zhaochengsheng的专栏 2930

每个程序员必看的TCP/IPsocket通信

协议”是一种约定。计算机之间传输媒介是光信号和电信号,通过“频率“和”“强弱”来表示0、1这样的信息,想要传递不同的信息,需要约定好双方的数据格式。网络协议是一个共同标准,大家都来遵守。为了让两台主机通信,需要协议和标准的数据格式才能进行通信。通过协议分层便于封装。

weixin_44810982的博客 2596

TCP/IP体系结构、Socket、进程PID、端口Port

TCP/IP体系结构、Socket、进程PID、端口Port 一、TCP/IP体系结构 首先OSI参考模型,OSI将网络分为七层,自下而上分别是物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP体系结构则将网络分为四层,自下而上分别是网络接口层、网络层、传输层、应用层。 (一)TCP协议 传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。 二、Socket 套接字(socket)是一个抽象层,应用

加载中....... 1199

TCP/IPHttpSocket,XMPP的区别

网络由下往上分为   物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。   通过初步的了解,我知道IP协议对应于网络层,TCP协议对应于传输层,而HTTP协议对应于应用层,   三者从本质上来说没有可比性,   socket则是对TCP/IP协议的封装和应用(程序员层面上)。   也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,   而HTTP是应用层

Hepburn_的博客 2479

tcp/ipsockethttp 三者关系

它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器端套接字的地址和端口号,然后就向服务器端套接字提出连接请求。复,表明知道客户端“在线”。

weixin_45476233的博客 896

Android之Http,SocketTcp/Ip

前言:最近在移动开发的项目中接触了很多关于网络连接的编程应用:如手机端调用服务端后台提供的接口,就是通过向服务端发送http请求,获取数据;而后台(我这边用的是tomcat)服务器对每一个http请求都开启了一个Tcp连接链路(关于这个点,我也不太确定,不过通过查看服务端的监听端口,好像是开启了,汗)。

feihaixin的专栏 1083

TCP/IPHttpSocket 简单理解

一、 什么是TCP/IP TCP/IP是一组用于实现网络互连的通信协议。Internet网络体系结构以TCP/IP为核心。基于TCP/IP的参考模型将协议分成四个层次,它们分别是:网络访问层、网际互联层、传输层(主机到主机)、和应用层。 ISO/OSI七层模型和TCP/IP模型的关系 简单的讲TCP/IP是一系列协议的集合,是构成网络通信的核心骨架,它定义了电子设备如何连入因特网,以及数...

无风的雨 7741

TCP/IPHTTP、HTPPS、socket的原理及区别

https://www.cnblogs.com/cb521413/p/8655862.html 网络由下往上分为物理层、数据链路层、网络层( IP协议)、传输层( TCP协议)、会话层、表示层和应用层(HTTP协议) 接下来我来说说个人理解其中的TCP/IPHttpSocket的区别 TCP/IP连接: 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接,TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 ..

zhuchenchangk163的博客 1325

TCP/IPHttpSocket的关系理解

TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。 关于TCP/IPHTTP协议的关系,网络有一段比较容易理解的介绍:“我们在传输数据时,可以只使用(传输层)TCP/IP协议,但是那样的话,如果没有应用层,便无法识别数据内容,如果想要使传输的数据有意义,则必须使用到应用层协议,应用层协议有很多,比如HTTP、FTP、TELNET等,也可以自己定义应用层协议。WEB使用HTTP协议作应用层协议,以封装HTTP 文本信息,然后使用TCP...

Goals1989的博客 205

HTTPTCP/IPSOCKET的区别

网络基础比较重要,尤其对于Android程序员来说,网络更是离不开的一个关键部分。我总结了很多前辈的文章和自己的一些学习心得,如下:TCP HTTP UDP:它们都是通信协议,也就是通信时所遵守的规则,只有双方按照这个规则沟通,对方才能理解TCP/IP是个协议组,它对应osi参考模型三层及以上层,可分为四个层次:网络接口层、网络层、传输层和应用层。在网络层有IP协议、ICMP协议、ARP协

DerWeltraum 651

TCP/IPHttpHttps、Socket的区别

网络由下往上分为物理层、数据链路层、网络层( IP协议)、传输层( TCP协议)、会话层、表示层和应用层(HTTP协议) 接下来我来说说个人理解其中的TCP/IPHttpSocket的区别 TCP/IP连接: 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接,TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。 建立起一个TCP连接需要经过“三次握手”: 第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_S

weixin_43733912的博客 1032

网络编程 TCP/IPHTTPSocket理解

1.TCP/IP(简称TCP) TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,定义了主机如何连入因特网及数据如何再它们之间传输的标准, 不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中 应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS等协议 传输...

qq_38052208的博客 189
上一篇: 究竟什么是Linux内核?我该如何高效学习?​附学习路线思维导图
下一篇: C++后端程序员必须彻底搞懂Nginx,从原理到实战详解
Linux服务器开发
博客等级 码龄7年 609粉丝 589原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值