一切都來的很突然,一早到實驗室拿了筆電就回台北了。也許是給自己太大的壓力,只有回到家才會回放鬆的感覺。
雖然說是回家渡假,但多少還是要有些進度。實驗或許不如預期,但論文還是要寫。已經說好下星期要交給老師修改過後的論文,所以,回家這幾天就來改一下論文,不會太累又可以休息。
話說明天過後,都是棒球比賽~~~
2007年11月5日 星期一
回家渡假
安裝NVIDIA顯示卡驅動程式
在Linux上安裝NVIDIA顯示下的驅動程式很容易,首先到官網下載適當的驅動程式。筆電顯卡為NVidia GeForce Go 7300,所以就載了NVIDIA-Linux-x86-100.14.19-pkg1.run。
安裝開始前,系統需具備一些編譯工具
# uname -r
2.6.22-2-686
# apt-get install linux-headers-2.6.22-2-686
# apt-get install build-essential
接著就可以開始安裝
# sh NVIDIA-Linux-x86-100.14.19-pkg1.run
按照指示一步一步做即可成功編譯。
Network Byte Order
Internet Protocols是採用Big-endian,因此有四個函式(定義於"netinet/in.h")可供我們轉換host byte order <--> network byte order:
uint16_t htons(uint16_t host16bitvalue) ; // host to network short
uint32_t htonl(uint32_t host32bitvalue) ; // host to network long
uint16_t ntohs(uint16_t net16bitvalue) ; // network to host short
uint32_t ntohl(uint32_t net32bitvalue) ; // network to host long
當處理port的時候,可以使用hotns()和ntohs()
當處理IPv4位址,可以使用hotnl()和ntohl()
2007年11月4日 星期日
Byte Odering
資料存在記憶體有兩種存法,一個為Big-endian,另一個為Little-endian。
- Big-endian:最高位元組(Significant Byte)存在記憶體的前頭。
- Little-endian:最低位元組(Least Significant Byte)存在記憶體前頭。
00000001 00000011 Big-endian
00000011 00000001 Little-endian
標籤: Computer Network
2007年11月3日 星期六
Value-Result
Socket address sturcture總是以reference(指標指向結構)傳進socket函式,而結構的大小也會被傳入。然而長度傳入的方法取決於process to kernel或是kernel to process。
Process to Kernel(bind, connect, sendto)
struct sockaddr_in serveraddr;
bind(sockfd, (Struct sockaddr *) &serveraddr, sizeof(serveraddr));
長度的資訊是用來告訴該copy多少資料從process到kernel
Kernel to Process(accept, recvfrom, getsockname, getpeername)
struct sockaddr_in clientaddr;
socklen_t letngth;
length = sizeof(clientaddr);
getpeername( sockfd, (Struct sockaddr*) &clientaddr, &length)
其中,長度的值會改變。用指標傳入,告訴kernel所傳入的struture大小。而當函式結束時,會回傳kernel儲存多少資料在structure,將值存在length上。像length這種參數稱為value-result參數。
2007年11月1日 星期四
Socket Address Structure
IPv4與IPv6的Socket Address Structure定義於"netinet/in.h"裡。
IPv4 Socket address structure: sockaddr_in
/* Internet address. */
typedef uint32_t in_addr_t;
struct in_addr {
in_addr_t s_addr;
};
/* Structure describing an Internet socket address. */
struct sockaddr_in {
sa_family_t sin_family; /* AF_INET */
in_port_t sin_port;
struct in_addr sin_addr;
unsigned char sin_zero[8]; /* Padding */
};
/* IPv6 address */
IPv6 Socket address structure: sockaddr_in6
struct in6_addr {
uint8_t s6_addr[16];
};
struct sockaddr_in6 {
uint8_t sin6_len;
sa_family_t sin6_family; /* AF_INET6 */
in_port_t sin6_port;
uint32_t sin6_flowinfo
struct in6_addr sin6_addr;
uint32_t sin6_scope_id;
};
