[Nework][TCP/IP] Hand made Ping

Ping server & Ping clinet 이전에 공부한 socket, bind, listen, accept, connect 등의 함수를 이용해 간단한 echo 서버를 만들었다. 기본적인 골격은 아래와 같다. 서버에서 연결 준비를 거친 뒤 클라이언트에서 연결한다.이후 클라이언트에서 write 함수를 통해 입력 받은 값을 서버에게 전달한다.서버는 전달 받은 데이터를 read 함수를 통해 한번 읽어 저장한 뒤 write 함수로 클라이언트에게 전달한다.서버로부터 데이터를 전달 …

[Network Term] Header, Palyload, Trailer

Network 용어 > Payload (페이로드) 네트워크의 패킷의 구조는 아래와 같이 생겼다. 앞에 패킷의 대한 설명을 담고 있는 Header뒤에오는 데이터를 Payload라고한다. 또한 뒤에 오는 Trailer(트레일러)는 패킷의 오류 등을 검출하기 위한 정보 등이 담겨있다.

[Network Basic] Socket 연결 과정

TCP SERVER SIDE 소캣을 생성한 후 bind함수까지 호출이 완료 되면 소캣은 주소가 할당 된다. listen( )함수를 통해 연결이 들어올 때 까지 대기한다. 클라이언트 측에서 connect 시도가 오면 accept( )함수를 통해 받아들인다 이후 read( ) 와 write( )함수를 통해 데이터를 송수신 하고 close( )함수를 통해 연결을 종료한다. TCP CLIENT SIDE 소캣을 생성한 후 connect( )함수를 이용해 …

[Network Basic] sockaddr_in 구조체 for IPv4

struct sockaddr_in 구조체 sockaddr_in 구조체는 IP와 PORT 정보를 담는 구조체이다. Define of sockaddr_in struct struct sockaddr_in { /** 담길 정보 **/ sa_family_t sin_family; // 주소체계 (AF_INET:IPv4) uint16_t sin_port; // port번호 > uint16_t로도 정의되어있음 struct in_addr sin_addr; // 32비트 IP주소 char sin_zero[8]; // 사용되지 않음 } Define of in_addr struct struct in_addr { /** 담길 정보 **/ …

[Network Basic] ioctl()함수와 ifreq구조체

I/O 관련 하드웨어 제어 함수 header : #include <sys/ioctl.h>int getsockopt(int sockfd, int request, …)         > setsockopt()함수 보다 더 낮은 레벨에서 소켓 디스크립터를 제어 가능한 함수 인자 설명 int sockfd : 소켓 디스크립터 int request : 요청할 정보 … : 요청한 정보에 따라 달라진다. ∗ 함수 실행에 문제 생길 경우 0보다 작은 값을 반환한다. ioctl()를 이용해 …

[Network Basic] Socket option function

소켓 옵션 관련 함수 이번 포스트에선 소켓의 옵션을 변경하거나 현재 소켓의 설정 정보를 가져오는 방법에 대해서 알아보자. header : #include <sys/types.h>              #include <sys/socket.h>int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *potlen)         > 소켓의 정보를 가져오는 함수 인자 설명 int sockfd : 소켓의 디스크립터 int level : 검사할 프로토콜 레벨 int optname : 옵션 …

[Network Basic] Byte Order Function

바이트 순서 관련 함수 네트워크 프로그래밍을 위해 추가로 신경 써야 하는 것이 바로 데이터의 바이트 순서이다. 바이트 순서는 리틀 엔디언과 빅 엔디언의 두 가지가 있다. Intel 의 경우 리틀 엔디언을 사용하고 모토로라 등은 빅 엔디언을 사용하는데 이때 각각의 엔디언에 맞게 전송해주어야 한다. 종류 0x12345678의 표현 리틀 엔디언(Little Endian) 78 56 34 12 빅 엔디언(Big Endian) 12 …

[Network Baisc] Socket Function

Socket이란? 네트워크 프로그램을 개발할 수 있도록 운영체제에서 제공하는 인터페이스라고 표현할 수 있다.즉, 네트워크를 통해 데이터 Pecket을 주고 받는 개체인 통신 종점이다. 스트림(Stream) 이란? Stream Sockets − Delivery in a networked environment is guaranteed. If you send through the stream socket three items “A, B, C”, they will arrive in the same order − “A, B, …