当前课程知识点:互联网体系结构 >  第二周:Socket网络编程 >  Socket接口 >  Video

返回《互联网体系结构》慕课在线视频课程列表

Video在线视频

Video

下一节:Video

返回《互联网体系结构》慕课在线视频列表

Video课程教案、知识点、字幕

学习网络socket编程是我们绕不过去的几部分

所以我们就是

这次可能我们就是重点讲一下socket编程

我们看一下说什么是socket

对吧socket

它是独立于具体协议的网络编程接口

他在计算ISO模型中的就是ISO,OSI模型啊

他主要会于会话层和传输层之间

也就是我们那个TCP的四层

里边的就是传输层,传输层他和那个OSI模型

在相同那一层,BSD就是我们现在在Linux常用的套接字

就是BSD socket

现在通过这个标准的Unix

此文件描述符和其他的程序通信的一个方法

目前这个BSD socket已经被广泛运用

也成为了一个行业的标准

当然在Windows下我们用winsock它的接口会稍微有一点不一样

但是基本上他的就是编程的socket的编程的逻辑是一样的

他的指示函数函数名有点不一样

套接字

接着就是

OS操作系统叫文件描述符实现为一个指针

数组指向一个内部的数据结构进行进程

这个描述符表的

下标也就说

套接字描述符呢

和我们打开一个文件

open文件那文件描述符它实际上是在同一个表当中

只是那文件描述符的是用open来创建的

而就是socket的描述符呢

套接字描述符呢

是用socket函数来创建的

所以他们是同一个

这个是在内部的

就是管理上他是统一起来的

对于unix之类的系统都是这样

我们看一下这个

嗯就是socket叫做文件描述符表啊

在里边

那我们看就是他有0123按照标准标准输入标准输出

但是前面几个对吧

后面呢

我们就是程序可能会打开的一些文件或者是创建的socket都可能放在后面

他也就说一次的在一个进程

每个进程都有一个

文件描述符表啊

我们这边的我们可以看到这地方4号

四号文件描述符,他是一个socket描述符

他这里边呢

他指向了一个数据结构

这个数据结构里面的

他的family

就是他使用的就是PF

就是这个协议族

然后他服务

那是sock stream

这个待会儿我们讲他是流式的

又是TCP协议

还有他的就是地址和端口号

就是地址和端口的信息

这个套接字呢

他分主动套接字和被动套接字

他在就是使用方式有点不同

它的创建方式和使用方式有点不一样

等就是被动的呢

他是把socket打开在那儿等着一般是服务器

他开放

某一个端口啊

他在那儿等着

其它的客户端来连接

它是被动地提供服务

而主动的socket呢

他一般是客户端的他主动连接某一个服务是吧

他是主动的套接字

一般的就是那个被动的套接字呢

他都是用一个

就是他的端口号呢

都是有

就是就是试一试

之前的约定俗成的英语已经已经定义好的某一个套接字

比如说http

他是用八零端口的吧

但是这个大家都一般来讲都是用八零端口

对这套接字

而就是主动套接字呢

因为他的端口号呢

他是主动的

连接其他的

所以呢

他端口号往往是临时分配的

所以呢

他这个端口后往往就是比较大一点几千或者上万的端口号

这个端口号呢

就是他在使用时要指明这个IP地址和端口号

就相当于两个人互相通信

对吧

你要写信给对方

你要知道对方的地址和门牌号

对吧

哎就是你的

你写信寄过去

到时候你也要写上自己的地址和门牌号

所以呢

你在寄信之前

你一定要知道对方的对吧

所以他主动的呢

往往是就是一个一一个二就是主动的套接字客户端的往往就要知道服务端的

而服务端接到客户的信之后

那么他也知道了客户端的地址是IP地址和端口号

他所以他就能回信对吧

恩这边呢

我们这地方有两个

就是两个

也就说一个PF

就是他是协议族

而AF的就是互联网地址族,这两个呢

他在内部定义,它的值是一样的

但是它的含义有点不一样啊

一个是指协议族一个是指地址

我们看这个地址的结构

地址的结构

因为socket的它是一个通用的

就是接口类型

它不只是互联网TCP/IP用这个socket的,他还有其他的协议用socket所以呢

这个socket是相对比较通用的

他在定义地址的时候呢

它定义了一个通用的地址

而他定义的地址呢

就是sa

这个地址啊

他是用了一个14字节的一个结构

它没有明确的定义

它里面到底是什么对吧

而这次在这14个字节里面呢

对于TCP/IP来讲

他用socket internet

他把这14个字节

定义的更加明确了

对吧

没有明确的

2字节的端口号4字节的IPV4的地址还有8个就是zero

对吧

所以他这个地址来定义的是

IP专用也就把这14个字节给他具体化了

这两个我们就可以

可以看到就是有点像一个抽象类和具体类对吧

就我们学面向对象的是不是

他这是一种C语言的方法

也就是说

这一个句子结构体声明的变量

我们通过强制类型转换可以转换成这个是吧

这一个呢

我们俩也跟强制类型转换成这个他两个呢

有一个具体和一般的关系

socket的类型哈

我们一般来讲socket

我们最常用的是两种类型

就是我们在应用上最常用的是两种类型

一种是stream

stream它是提供一个面向连接的可靠的数据传输服务,就是我们在TCP/IP

我们就是TCP协议

它提供数据无差错

无重复的发送

而按照的发送的顺序来接收的那是流量控制

它避免这个流量拥塞等

他的这个数据能被看成是一个字节流

他说

他叫stream对吧

还有原来叫数据报套接字

套接字

在我们第三批协议里面

那种一般就是UDP协议

它提供无连接服务数据包

而以独立数据包的形式发送不提供无差错

保证数据可能丢失

就是重复或者是发送的顺序

就是传输的过程中会顺序混乱

这个的都需要应用层

比如说我UDP传出一个文件

那么你有一页PPT传

即接收这个文件的时候

你应用程序要进行

这个文件的校验

然后呢

还有原始套接字

原始套接字就是相对比较低层次的协议了

比如说就是IP、ICMP的

他就是你使用的是原始套接字这个

一般我们做应用的时候用的比较少

恩对Linux socket的

我们这地方跟他讲了不同的操作系统的socket的有点不一样

比如Windows的socket的是winsock

Linux他是BSD sock

也是一个unix

发行版定义的socket的接口

所以呢

立刻就沿用了这个BSD

这种unix接口

linux socket 他一般

要使用两个这个头文件

一个是systypes

一个是syssocket

它是函数定义

互联网体系结构课程列表:

第一周:互联网概述

-课程内容简介

--Video

-网络协议基础

--Video

--Video

--Video

--Video

-上网浏览网页背后的网络通信过程

--Video

--Video

-实验环境安装配置

--Video

-网络相关命令

--Video

--Video

-本周作业

--外部链接

第二周:Socket网络编程

-编译、构建和调试

--Video

--Video

--Video

-Socket接口

--Video

--Video

-UDP范例代码

--Video

-TCP范例代码

--Video

-本周作业

--外部链接

第三周:TCP协议与Linux内核

-TCP协议概述

--Video

--Video

-Linux网络协议栈源代码简介

--Video

-Linux系统的编译、构建和调试

--Video

--Video

-TCP协议源代码分析

--Video

-本周作业

--外部链接

第四周:IP协议及路由表

-IP协议基础

--Video

-路由表

--Video

-路由转发举例

--Video

-IP协议栈源代码解析

--Video

-路由协议简介

--Video

-网络层数据传输路径解析

--Video

-本周作业

--外部链接

第五周:ARP协议及ARP缓存

-ARP协议基础

--Video

-ARP解析的过程

--Video

-ARP解析在网络传输过程中的作用

--Video

-ARP协议栈源代码解析

--Video

-本周作业

--外部链接

第六周:二层交换网络及转发过滤数据库

-以太网基础

--Video

--Video

-交换机的学习、转发和过滤数据库

--Video

-常见二层协议

--Video

-数据链路层在Linux网络协议栈中的一些关键代码分析

--Video

-本周作业

--外部链接

第七周:DNS协议及域名存储与解析

-DNS协议基础

--Video

-DNS域名的存储

--Video

-DNS域名解析过程分析

--Video

-本周作业

--外部链接

第八周:互联网架构设计背后的渊源

-互联网架构设计的最初动机与核心目标

--Video

-互联网架构设计的具体目标及背后重要权衡

--Video

--Video

--Video

-课程考核

--外部链接

Video笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。