LISTEN() 함수바로 들어오지 마시고 대기표 뽑고 기다리세요클라이언트 요청을 받기 위한 수신 대기 Queue 생성- 클라이언트 요청을 바로 받지 않고 수신 대기 큐에 PUSH- 서버가 클라이언트와 연결될 수 있는지 체크 후 연결하기 위해 바로 연결 X- 대기 큐를 생성하기 전에 클라언트가 연결 요청을 할 경우 오류 발생 #include int listen(int sockfd, int backlog) 1) sockfd주소 정보를 할당할 소켓의 파일 디스크립터※ 파일 디스크립터: Linux가 파일을 구분하기 위해 배정한 번호 2) backlog대기 큐의 크기접속 가능한 클라이언트의 개수( = 연결 큐의 길이 ) TCP는 1:1밖에 안되는데 한 서버에 여러 클라이언트가 연결 요청을 하는 상황 발생연결 큐가..
IP 주소 변환 함수 설명 전 이해하자!예) 0x12345678 4바이트 데이터가 있다.이 데이터가 메모리에 저장될 때 하위 바이트/ 상위 바이트가 저장되는 메모리 주소는 어떻게 될까?1. 빅 에디안(Big-Endian)- 하위 바이트가 저장되는 주소가 상위 바이트가 저장되는 주소보다 큰 경우 0x12 - 1바이트 ➡️ 0x107번지0x34 - 1바이트 ➡️ 0x108번지0x56 - 1바이트 ➡️ 0x109번지0x78 - 1바이트 ➡️ 0x110번지2. 리틀 엔디안(Little-endian)- 하위 바이트가 저장되는 주소가 상위 바이트가 저장되는 주소보다 작은 경우0x12 - 1바이트 ➡️ 0x110번지0x34 - 1바이트 ➡️ 0x109번지0x56 - 1바이트 ➡️ 0x108번지0x78 - 1바이트 ➡..
🏠 주소 정보 1. 프로토콜(IPv4, IPv6) 2. IP 주소 3. 포트 번호 주소를 저장하기 위한 2가지의 구조체가 있다. SOCKADDR_IN 구조체: 개발자는 SOCKADDR_IN 구조체를 사용해 주소 정보 저장 SOCKADDR 구조체: 소켓에 주소 정보를 연결할 땐 SOCKADDR 구조체로 변환하여 사용 ❗SOCKADDR 구조체는 사람이 사용하기에 불편한 형식이라 사용하기 편한 SOCKADDR_IN 구조체로 주소 저장 주소 정보를 등록하는 순서 1. sockaddr_in 구조체를 모두 0으로 초기화 ➡️ 0으로 초기화 시키지 않을 경우 sockaddr 구조체 변환할 때 오류 2. sockaddr_in 구조체 멤버에 값들을 저장 3. sockaddr_in 구조체를 sockaddr 구조체로 변환 ..
소켓에 주소 설정 - 소켓에 IP Adress / Port 번호 정보 연결 #include #include int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) 매개 변수 1) sockfd 주소 정보를 할당할 소켓의 파일 디스크립터 ※ 파일 디스크립터: Linux가 파일을 구분하기 위해 배정한 번호 2) addr 프로토콜 버전(IPv4/IPv6), IP 주소, Port 번호 정보를 담고 있는 sockaddr 구조체 포인터 struct sockaddr_in serv_addr; memset(&serv_addr, 0, sizeof(serv_addr)); serv_addr.sin_family = AF_INET; serv_addr.sin_por..
📖단어 사전 패킷: 데이터를 여러 개 나눈 블록 오류 제어: 전송할 때 나는 데이터 오류 찾기 & 해결 호름 제어: 수신 측이 받을 수 있는 만큼 전달 되도록 데이터 흐름 속도 조절 SOCK_STREAM - TCP에서 사용하는 방식 = 연결지향형 소켓 - Segment 전송 방식 = 데이터 분해 후 순차적으로 전달 / 데이터를 받고 조립 100명 사용 ➡️ 100가닥 전선 설치 X ➡️ 1,2개 선만 사용해서 데이터를 조각내서 전달 O 특징 1) 송신측에서 전송하는 패킷은 순서대로 수신측에 전달된다. 2) 만일에 전달된 패킷에 문제가 있을 경우 재전송을 통해서 다시 받을 수 있다. 3) 오류제어 및 흐름제어가 가능하다. 4) 신뢰성을 보장한다. 5) 1: 1 만 가능하다. 6) 전달되는 데이터는 경계가 ..
소켓 생성 #include int socket(int domain, int type, int protocol); 매개변수 1) domain 인터넷 프로토콜 버전 선택 - AF_INET(IPv4) / AF_INET6(IPv6) *인터넷 프로토콜: 데이터 패킷이 네트워크를 통해 이동하고 올바르게 도착하게 하기 위한 규칙 프로토콜에 대해 알아보기 2) type 프로토콜의 동작 방식 선택 - SOCK_STREAM(TCP 기반 통신) / SOCK_DGRAM(UDP 기반 통신) SOCK_STREAM, SOCK_DGRAM에 대해 알아보기 3) protocol 필수 항목 X - 입력을 원치 않을 경우 0 type 선택으로 이미 프로토콜을 알기 때문에 명시적인 용도로 지정 프로토콜 정보 지정 - IPPROTO_TCP(T..