关于网络的几个基础概念

学校时教过网络编程,但是工作后一直没接触,作为码农基础知识,复习下吧。

分层

有七层协议,五层,四层之说,都一样。作为入门只需要知道四层。

  • 链接层
  • 网络层:使用IP协议让通过路由器连接起来的计算机能够互相通信。是计算机与计算机的通信。
  • 运输层:使用UDP和TCP协议完成不同计算机的应用进程间的通信。是应用进程与应用进程的通信。
  • 应用层:规定应用进程在通信时的协议。HTTP,FTP等。是对运输数据的进一步加工,或者说按规则封装解析,使其适合某一类进程使用,比如文件传输用FTP。

TCP

  • 运输层协议之一。
  • 面向连接。发送数据前,两端需要进行三次握手确认连接后,方可发送数据。所以说是可靠的。
  • 有序的。通过滑窗,ack信号,重发机制来完成。

UDP

  • 运输层协议之一。
  • 无连接。直接发送数据,不保证数据是否能收到。所以说是不可靠的。
  • 无序的。可能丢失,重复。

Socket(套接字)

  • 对TCP/IP的封装,支持TCP和UDP协议,是一套调用接口(API)。
  • 抽象的表示端口到端口的连接。
  • 连接过程:服务器监听,客户端请求,连接确认。

HTTP

  • 应用层协议之一。
  • Unity的WWW。
  • 规定数据的封装解析规则。
  • 基于TCP。但是只能由客户端先主动向服务端发送请求。
  • HTTP1.1前是短连接,HTTP1.1开始支持长连接。
  • HTTP1.1之前,发一条数据,需要先确认连接,然后发送一条数据,然后断开连接.
  • 其实一般都认为HTTP是短连接,而socket(TCP)被用于实现长连接。

长连接和短连接

  • 一般是针对TCP而言的。
  • 建立TCP连接,发送一条数据后,立即断开连接,那么就是短连接。反之,维持连接状态,知道某一端主动关闭接口,那么就是长连接。
  • 如果端对端的连接数多,但一条连接线路中请求不多,就用短连接。因为保持连接也需要占用资源。
  • 如果一个端对端的连接中,请求很多,就用长连接。因为建立连接的过程也是个消耗过程。

Socket过程

  • 建立一个Socket需要知道,协议,发送端端IP,发送端端端口号,接收端IP,接收端端口号。
  • 服务端:new socket -> bind -> listen -> accept -> read/write -> close (listen监听端口,accept收取客户端Socket)
  • 客户端:new socket -> connect -> read/write -> close


    Socket建立过程.jpg

TCP连接的三次握手

  • 客户端发送同步信号syn(j) -> 服务端返回同步信号syn(k),确认信号ack(j+1) -> 客户端发挥确认信号ack(k+1)
  • 客户端调用connect -> 服务端accept -> 客户端connect得到返回 -> 服务端accept得到返回
    TCP三次握手.png

参考

之前写的一个相关的测试工程
Linux Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)
TCP、UDP以及TCP滑窗,它们的区别

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定...
    蛋炒饭_By阅读 5,005评论 0 10
  • Socket编程 1基础知识 协议 端口号(辨别不同应用) TCP/IP协议 是目前世界上应用最广泛的协议是以TC...
    __豆约翰__阅读 4,750评论 0 3
  • 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编...
    程序员欧阳阅读 6,148评论 1 37
  • 一、HTTP HTTP简介 ①HTTP协议是Hyper Text Transfer Protocol(超文本传输协...
    RM_乾笙阅读 34,190评论 8 65
  • 高中时,曾认真的不止一遍读过钱钟书先生的《围城》,经过岁月的历练沉淀,反复的品味实践,愈感觉:围城无处不在!婚姻、...
    突刺阅读 1,664评论 0 1