728x90
728x90

전송 7

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