728x90
728x90

네트워크 12

네트워크 프로그래밍(Network Programming)의 분류

응용 계층(Application Layer) 프로그래밍 응용(작업) 단위 동작을 네트워크 통해 수행하위 계층의 동작을 구체적으로 제어하는 것은 어렵고 효율 저하 발생함.HTML 작성하는 웹 프로그래밍이 이에 해당함.이미 작성된 유틸이나 응용 프로그램을 활용하며, 작성/변경/운영 작업이 용이. 트랜스포트 계층(Transport Layer) 프로그래밍 통신 종단 간 연결 관리 및 패킷 단위 동작 제어.인터넷 프로그램에서 빈번하게 사용되며, OS 별 소켓 API가 유사해 호환성이 좋음. Socket API 예)UNIX BSD socke,t Winsock, TLI(Transport Layer Interface) 디바이스 드라이버 계층(Device Driver Layer) 프로그래밍 링크 계층, 하드웨어를 구동해..

Network] 시그널 종류

시그널발생 조건SIGINT인터럽트키(Ctrl+c)를 입력했을 때 발생SIGKILL강제 종료 시그널, 프로세스에서 이 시그널을 무시하거나 블록 불가SIGIO비동기 입출력이 발생했을 때 전달SIGPIPE파이프 통신에서 수신 프로세스가 종료했을 때, 송신 프로세스가 파이프에 write하면 발생SIGCHLD프로세스가 종료되거나 취소될 때 부모 프로세스에 전달SIGPWR전원의 중단 및 재시작 시, init 프로세스로 전달SIGTSTP사용자가 키보드에서 중지키(Ctrl+z)를 입력했을 때 발생SIGSYS잘못된 시스템 호출 시 발생SIGURG대역 외 데이터를 수신 시 발생SIGHUP터미널과 연결이 끊어졌을 때 세션 리더에게 발송SIGUSR1사용자가 임의의 목적으로 사용 가능SIGUSR2SIGQUIT종료키(Ctrl+/..

C#] System.Net 네임스페이스

### System.Net 네임스페이스 현재 네트워크에서 사용되는 여러 프로토콜에 대한 단순한 인터페이스 제공된다.DNS, IPAddress, IPHostEntry 클래스 등이 존재하며, 상당히 많은 클래스가 존재한다. ## DNS 클래스 단순 도메인 이름 확인 기능을 제공하는 클래스.특정 호스트의 정보를 인터넷 DNS에서 검색하는 정적 클래스이다.DNS 쿼리에서 검색한 호스트 정보는 IPHostEntry 클래스의 인스턴스에 반환된다.지정된 호스트의 DNS DB에 여러 항목이 있으면 IPHostEntry에 여러 IP 주소와 별칭을 포함한다. # GetHostName : 로컬 컴퓨터의 호스트 이름을 가져옴# GetHostAddress : 지정된 호스트의 IP 주소 반환함 ## IPAddress 클래스 컴퓨..

Network] 네트워크 주소와 호스트 주소 변환 방법

Endianness 컴퓨터의 메모리에 여러 바이트로 구성된 데이터를 저장하는 방법Byte Order라고도 함컴퓨터의 바이트 순서는 프로세서 아키텍처에 의해 결정, 호스트 바이트 정렬이라고 부름 x86 : little-endian 네트워크 통신 중 이종 컴퓨터 사이의 바이트 정렬 문제를 해결하기 위해 빅 엔디안 방식의 네트워크 바이트 정렬 사용멀티 바이트 데이터 타입에서 중요함 바이트 정렬 함수 Linux / Unix u_short htons(u_short hostshort); // host to network shortu_long htonl(u_long hostlong); // host to network longu_short ntohs(u_short netshort); // network to host..

Network] UDP 주요 함수

bind Function int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);성공 : 0, 실패 : -1 - sockfd : 주소를 할당할 서버 소켓 디스크립터- addr : 서버의 주소 정보를 담은 구조체(IP주소, 포트 번호 등)- addrlen : addr에 저장된 주소 정보 크기(byte) 수신된 패킷의 포트번호와 이를 처리할 프로세스를 지정하기 위해 을 연결서버 주소 정보를 addr을 통해 전달 가능 recvfrom Function ssize_t recvform(int sockfd, void* buf, size_t len, int flags, struct sockaddr* src_addr, socklen_t* addrlen)..

Network] TCP 상태 전이

TCP 상태 전이 연결 단계 : 3-way HandShaking 1. TCP는 종단 host 간의 논리적 접속을 설정하기 위해 3-way HandShaking 사용 Client->Server : TCP SYNClient->Server : TCP ACKServer->Client : TCP SYN ACK SYN : Synchornize Sequence NumbersACK : Acknowledgement 2. TCP 연결 과정을 상태 전이도 측면 #1 : Client는 Sserver에 접속 요청하는 SYN Packet을 보내고, Server의 응답을 기다리는 SYN_SENT 상태로 전이#2 : Server는 SYN 요청을 수신하고 Client에게 요청을 수락하는 ACK와 SYN 플래그가 설정된 Packet을 ..

Network] TCP 소켓 데이터 전송 특징

TCP 헤더(IPv4) 바이트 스트림을 Segment 단위로 나눔Segment : TCP를 이용하여 두 종단 호스트 간에 전달되는 데이터 단위 송신지 포트번호16bit수신지 포트 번호16bit순서번호(Sequence Number)32bit확인 응답 번호(Acknowledgement Number)32bit헤더 길이4bit예약6biturgackpshrstsynfinWindow16bit검사 합16bit긴급 포인터(Urgent Pointer)16bit옵션 & 패딩(Padding) 1. 송/수신지 포트 번호 16bitsegment 전송하는 host에 있는 응용프로그램의 포트 번호를 의미 2. 순서 번호(SEQ) 32bitsegment에 포함된 데이터의 첫 번째 바이트에 부여된 32비트 부호 없는 번호를 의미수신지..

Network] TCP 기반 클라이언트 프로그램 주요 함수

connect Function 서버와 통신을 위한 연결(세션)을 생성연결할 서버의 주소 정보를 설정해야 함 int connect(int sockfd, const struct sockaddr* addr, socklen_t addrlen);return 0(success), -1(fail) - sockfd : 서버에 연결 요청하기 위한 클라이언트 소켓 디스크립터- addr : 연결할 서버의 주소 정보가 설정된 구조체- addrlen : addr의 크기 read Function 전송된 메세지를 수신하기 위해 사용LINUX에서는 소켓이나 파일을 동일한 타입의 디스크립터로 정의하므로 데이터 수신할 때 사용 가능 ssize_t read(int fd, void* buf, size_t nbytes);성공 : 읽은 데이터..

Network] TCP 기반 서버 프로그램 주요 함수

bind Function listen function에서 사용할 server socket의 서버 주소 정보 설정서버 주소 정보를 두 번째 인자 addr을 통해 전달 가능 int bind(int sockfd, const struct sockaddr* addr, socklen_t addrlen);return 0(success) or 1(fail) - sockfd : 주소를 할당할 서버 소켓 디스크립터- addr : 서버 주소 정보를 담은 구조체(IP Address, Port Number, etc..) listen Function 클라이언트의 연결 요청을 수신하기 위한 서버 소켓 지정'연결 요청 대기 큐' 생성 int listen(int sockfd, int backlog);return 0(success) o..

728x90