socket,http
- 套接字是什么
-
- 套接字类型
-
- 什么是端口
- 区别
师父让我写一个网站后端,说我的基础太差了,需要补基础
这时候我有个问题,socket,http;这俩怎么作用这么相似?怎么区别?
基于网络的通信,需要先创建“套接字”
套接字(Socket)是计算机网络中实现进程间通信的核心机制,其本质是操作系统提供的一组编程接口(API),用于在不同设备或同一设备的不同程序间建立可靠的数据传输通道。
HTTP是应用层协议,而socket是传输层的接口。HTTP基于TCP,而TCP又依赖于socket来建立连接。
HTTP是应用层协议,而套接字是更底层的传输机制,HTTP基于套接字实现。
套接字是什么
-
通信端点:套接字是网络通信的端点,由 IP地址 + 端口号 唯一标识(如
192.168.1.10:8080
)。 -
协议支持:支持TCP(可靠传输)、UDP(高效传输)等协议,适应不同场景需求。
-
抽象层级:在OSI模型中位于 传输层与应用层之间,屏蔽底层网络细节,简化编程。
套接字类型
什么是端口
在创建服务器时,还必须要指定一个端口号。当一台服务器,同时对外提供多种服务时,比如WEB服务,远程登录服务等等,就需要使用“端口号”,对不同的服务进行区别。每个服务,都有自己唯一的端口号。
但是,服务器端在网站访问服务之前,需要创建“套接字”。
区别
使用HTTP必然使用Socket(因为HTTP基于TCP,而TCP通过Socket实现)。但反过来,使用Socket不一定用HTTP,因为Socket更底层,支持多种协议。
最后,用比喻来巩固理解,比如Socket是道路,HTTP是汽车,汽车需要道路,但道路也可以跑其他车辆(协议)。这样用户更容易记忆。
#include<stdio.h>//实现网络的初始化
//返回值:套接字(服务器端套接字)
//端口
//参数:port 表示端口
// 如果*port的值是0,那么就自动分配一个可用的端口
int startup(unsigned short* port)
{//to do
}
int main()
{unsigned short port = 80;//端口在网络开发里面统一规定,无符号short类型,0~65535int server_socket = startup(&port);printf("httped服务已经启动,正在监听%d端口....", port);//to do
}
初步框架已经写好