TCP/IP协议用户层详解

本文详细阐述了TCP/IP协议用户层的内容,包括IP地址与端口号、传输层协议、网络字节序、socket编程、应用层协议(如HTTP和HTTPS)的原理。重点讲解了HTTP协议的组成部分,如URL、方法、状态码,以及HTTPS的安全加密过程。通过学习,读者能更好地理解网络通信的基础和安全机制。
摘要由CSDN通过智能技术生成

目录

一、预备知识

1、IP地址与端口号

2、网路传输四层协议

3、网络字节序

4、socket编程

4.1 socket 常见API

4.2 sockaddr结构 

二、应用层协议

网络计算器

三、http协议

1、认识URL

2、HTTP协议格式

3、http协议各部分介绍

3.1 HTTP常见属性

3.2 HTTP的方法

3.3  HTTP的状态码

四、https协议

1、加密方式

2、加密过程

3、CA机构
​​​​​​​


一、预备知识

1、IP地址与端口号

ip地址:ip地址唯一的标识互联网中的一台主机。

端口号(port):唯一的标识一台机器上的一个进程。在一台机器上每个进程的标识都是独一无二的,但是在不同机器上的进程标识可以相同。

PID和端口号都是用来标识进程的,他们两个类似于身份证号和学号的区别。身份证号在全国都通用,学号只在学校适用,在学校里通常用学号而不是用身份证号进行管理,原因是学号能更好的反映出学生在学校中特定的信息,比如年纪班级等,管理起来更方便。同时学号还有一个作用,那就是形成了一套自己的管理体系,假如有一天因为特殊原因人们的身份证号需要变动,学号形成的管理体系也不会受影响,在一定程度上完成了解耦。端口号也是如此,只在特定的机器上适用。

总结:ip地址代表某一台主机,端口号代表主机上的一个进程,IP地址 + 端口号能够标识网络上的某一台主机的某一个进程,是互联网中的唯一标识。网络通信就是把数据从某台机器的某个进程交到另一台机器的某个进程,所以网络通信本质上是进程间通信。

注意:一个进程可以绑定多个端口号,但是一个端口号不能被多个进程绑定。

2、网路传输四层协议

应用层下面紧挨着的是传输层,传输层协议(TCP和UDP)的数据段中有两个端口号, 分别叫做源端口号和目的端口号,就是在描述“数据是谁发的,要发给谁"。TCP协议是一种可靠的传输,UDP是一种不可靠的传输。

3、网络字节序

我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分. 那么如何定义网络数据流的地址呢?

  • TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节。
  • 不管这台主机是大端机还是小端机, 都会按照这个TCP/IP规定的网络字节序来发送/接收数据。
  • 如果当前发送主机是小端, 就需要先将数据转成大端; 否则就忽略, 直接发送即可。

为使网络程序具有可移植性,使同样的C代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换。

其中h代表主机,n代表网络,l代表32位长整数,s代表16位短整数。如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回。如果主机是大端字节序,这些 函数不做转换,将参数原封不动地返回。

4、socket编程

socket(套接字)是网络通信的桥梁。

4.1 socket 常见API

这些与socket相关的API是传输层暴露出来的接口,通过调用这些接口可以实现网络通信,这个过程是在用户层完成的。

// 创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器)
int socket(int domain, int type, int protocol);
// 绑定端口号 (TCP/UDP, 服务器)
int bind(int socket, const struct sockaddr *address,socklen_t address_len);
// 开始监听socket (TCP, 服务器)
int listen(int socket, int backlog);
// 接收请求 (TCP, 服务器)
int accept(int socket, struct sockaddr* address,socklen_t* address_len);
// 建立连接 (TCP, 客户端)
int connect(int sockfd, const struct sockaddr *addr,socklen_t addrlen);

各接口解释:

  • socket (),创建socket的过程,本质是打开文件,文件中仅仅有与系统相关的内容
  • bind (),本质是将ip和port与文件信息进行关联
  • listen (),本质是设置该socke的状态,允许别人来链接我
  • accept (),获取新链接到应用层,是以fd为代表的,当有多个链接连上我们的服务器时,操作系统要对他们进行管理,在OS看来,每一个链接都相当于一个文件结构体。
  • connect (),本质是发起连接。
  • read ()和write (),本质就是进行网络通信,但在用户看来,就是进行普通的文件读写操作。

4.2 sockaddr结构 

socket API是一层抽象的网络编程接口,适用于各种底层网络协议。然而, 各种网络协议的地址格式并不相同。

  • IPv4和IPv6的地址格式定义在ne
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值