TCP/IP协议原理解析

        我算是半路出家的程序员吧,刚毕业的时候不知道做什么,工作后庆幸遇到了一名好leader,给我指了前端这条路。所以,虽然可以完成工作,但是对一些基础知识却了解的不够深入透彻,是时候该补补短了。

        要实现WEB浏览器和服务器之间的通信,最基础的就是HTTP了。开始打算从被称作圣经的《HTTP权威指南》入手,拿到手后,厚度让我有点怵头,但还是下定决心,把它啃下去。这本书中的概念很多,一边看一边请教大神,啃到第二章的时候,遇到了【可移植的】这个概念,理解不了。查询过程中,发现好多大神并不推荐初学者从这本书入手,遂转而从几位大神推荐的《图解HTTP》入手。

        为了了解HTTP,有必要先了解一下TCP/IP协议族。通常使用的网络,是在TCP/IP协议族的基础上运作的。TCP/IP协议族里最重要的就是分层,分为应用层、传输层、网络层和数据链路层。

        应用层决定了向用户提供应用服务时通信的活动,FTP(File Transfer Protocal)、DNS(Domain Name System)、HTTP处于该层。

        传输层提供处于网络连接中两台计算机之间的数据传输,TCP(Transmission Control Protocal)处于该层。

        网络层,又叫网络互联层,规定了通过怎样的路径到达对方计算机,并吧数据包传给对方。IP(Internet Protocal)处于该层。

        链路层,又叫数据链路层,网络接口层,用来处理连接网络的硬件部分。

        利用TCP/IP协议族进行网络通信时,会按照分层顺序与对方进行通信。用HTTP举例来说,作为发送端的HTTP客户端在应用层(HTTP协议)发送一个想要看某个web网页的HTTP请求。然后,为了便于传输,在传输层(TCP协议)把从应用层接收到的数据(HTTP请求报文)进行分割,并给每一部分加上序号和端口号发送到网络层。在网络层(IP协议),增加作为通讯目的地的MAC地址后,再转发给链路层。接收端的服务器在链路层接收到数据,按序往上层发送,到达应用层,才算真正接收到来自客户端的HTTP请求。

        发送端在层与层之间传输时,每到一层,就会打上一个该层专属的首部信息;反之,接收端在层与层之间传输时,每经过一层,就会去掉首部信息。

 

        下面针对在TCP/IP协议族中,与HTTP密不可分的三个协议进行说明。

        负责传输的IP协议。

        IP协议的作用是把各种数据包传送给对方,其中两个重要的条件是IP地址(节点被分配到的地址,可变换)和MAC地址(网卡所属的固定地址,基本上不会更改)。在网络上通信时,通常需要多台计算机和网络中转才能连接到对方。在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标,这时,会采用ARP(Address Resolution Protocal)协议,可以根据通信方的IP地址反查出对应的MAC地址。就像快递公司的送货过程。

        确保可靠性的TCP协议

        为了准确的将数据送达,TCP采取了三次握手(three-way handshaking)策略。握手过程中使用了TCP标志——SYN(synchronize)和ACK(acknowledgement)。发送端首先发送一个带SYN标志的数据包给对方。接收端收到后,会回传一个带SYN/ACK标志的数据包,表示确认送达。最后,发送端再回传一个带ACK标志的数据包,表示“握手”结束。握手过程中,任何一个阶段中断,TCP协议会再次以同样的顺序发送相同的数据包。

        负责域名解析的DNS服务

        DNS提供域名到IP地址间的解析服务,可以通过域名查着IP地址,或通过IP地址反查域名。

 

        基本的过程和概念就这些,再借用《图解》中的图,可以更加清晰的了解整个数据传输过程了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值