tcp/ip详解2-chapter1

1.2  源代码旧式c函数定义

1.3  BSD版本变迁

1.4  应用编程接口
Berkeley socket 和由AT&T开发的TLI,被X/Open承认,也称XTL,XTL是TLI的有效超集
1.5UDP时间服务请求例程(未实现err_sys)
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define BUFFSIZE 150

int main()
{
        struct sockaddr_in serv;
        char buff[BUFFSIZE];
        int sockfd, n;

        if ((sockfd = socket(PF_INET, SOCK_DGRAM, 0)) < 0)
                printf("socket error");

        bzero((char *) &serv, sizeof(serv));
        serv.sin_family = AF_INET;
        serv.sin_addr.s_addr = inet_addr("210.72.145.8");
        serv.sin_port = htons(13);

        if (sendto(sockfd, buff, BUFFSIZE, 0, (struct sockaddr *) &serv, sizeof(serv)) != BUFFSIZE)
                printf("sendto error");

        if ((n = recvfrom(sockfd, buff, BUFFSIZE, 0, (struct sockaddr *) NULL, (int *) NULL)) < 2)
                printf("recvfrom error");
        buff[n-2] = 0;
        printf("%s\n", buff);

        exit(0);
}
1.6  系统调用
unix man 2 含系统调用文档,以c定义的,标准C库有同名函数,man 3 则是标准库函数,可以选择调用系统调用。
1.7  4.4BSD(Net/3)网络实现
4.4BSD实现4种通信协议族,tcp/ip(互联网协议族),XNS(Xerox网络系统),OSI协议,Unix域协议(stream,dgram)
1.8  描述符
描述符是进程的进程表项中的一个数组的下标
1.9  mbuf和udp输出
插口层和协议层的区别在于m_type是MT_SONAME还是MT_DATA以及是带有16字节的sockaddr_in还是封装了ip和udp首部
1.10  输入处理
1.12  中断级别和并发
优先级高的中断阻塞低的中断,splimp和splnet函数提升cpu优先级,splx释放优先级;中断会影响会影响协议层和接口层共享的数据结构;
1.13  源代码组织
1.11  测试网络net140.252.x.x,域名.tuc.noao.edu

posted on 2015-12-30 17:06  Copernicus  阅读(150)  评论(0)    收藏  举报

导航