8주차 개념 정리
아래의 내용을 코드 블럭 우측 상단의 Copy 버튼을 눌러 복사한 뒤, 퀴즈 로봇(신명훈 학우 제작)의 프롬프트에 붙여넣기하면 핵심 개념들에 대한 퀴즈를 풀어볼 수 있습니다.
HTTP/TCP/UDP의 기본 개념
□ HTTP
웹에서 서버와 클라이언트가 데이터를 주고받을 때 사용하는 통신 프로토콜.
요청과 응답으로 구성되어 있으며 일반적으로 80포트를 사용한다.
■ 요청/응답 메시지 구조
• 요청 라인(상태 라인)
• 키-값 쌍으로 이루어진 헤더들
• 빈 줄
• 바디(선택적)
■ 주요 메서드
• GET (조회) / POST (생성, 전송) / PUT (수정) / DELETE (삭제) / HEAD (헤더 정보만 요청)
■ 상태 코드 범주와 의미
• 1xx(정보)
• 2xx(성공): 200(OK)
• 3xx(리다이렉션): 301(Moved Permanently)
• 4xx(클라이언트 오류): 400(Bad Request), 401(Unauthorized), 403(Forbidden), 404(Not Found)
• 5xx(서버 오류): 500(Internal Server Error)
■ 주요 특성
• Request/Response 구조: 기본적으로 요청이 완료되어야 응답이 전달되는 순차적인 요청-응답 구조
• Stateless(무상태성): 서버는 클라이언트의 이전 요청 상태를 기억하지 않고 각 요청을 독립적으로 처리
○ 상태가 필요한 경우 쿠키, 세션, 토큰 등을 추가로 사용해야 함
• Connectionless(비연결성): 요청/응답 후 연결을 끊음
○ HTTP1.1부터는 keep alive 옵션을 사용해 연결 유지도 가능
■ HEAD 메서드
• GET과 유사하지만, 본문(body)을 제외하고 헤더 정보만 가져온다.
• 주로 리소스의 메타데이터(크기, 타입 등) 확인에 사용
────────────────────────────────────────────────────────────────────────────────────────────────────
□ TCP
데이터의 신뢰성과 순서를 보장하는 연결 지향형 프로토콜
TCP 기반 소켓 구현 방식으로 Stream Socket이 있다.
■ 특징
• 연결 지향: 데이터 전송 전 연결 설정 / 종료 시 연결 해제
• 신뢰성 보장: 데이터 손실, 중복, 순서 변경을 자동으로 처리해 정확한 데이터 전달 보장
• 데이터 스트림 기반: 개별 메시지 경계를 구분하지 않고, 연속적인 바이트 스트림으로 처리
• 오버헤드 존재: 데이터 신뢰성 확보를 위한 추가적인 확인과 재전송 과정으로 속도가 상대적으로 느림
■ 연결 시의 3-way handshake
1. 클라이언트 SYN(seq = x)
2. 서버 SYN, ACK(seq = y, ack = x+1)
3. 클라이언트 ACK(ack = y+1)
■ 사용 예시
• 웹 브라우징(HTTP/HTTPS), 이메일 전송(SMTP), 파일 전송(FTP) 등
────────────────────────────────────────────────────────────────────────────────────────────────────
□ UDP
빠른 전송을 위해 신뢰성과 순서를 포기한 비연결형 프로토콜
UDP 기반 소켓 구현 방식으로 Datagram Socket이 있다.
■ 특징
• 비연결성: 미리 연결 설정을 하지 않고 데이터를 즉시 전송
• 비신뢰성: 데이터 전송 성공 여부를 확인하지 않고 재전송 및 순서 제어 없이 단순 전송(손실 및 중복 발생 가능)
• 메시지 경계 유지: 전송한 데이터 단위가 그대로 유지
• 고속 전송: 오버헤드가 적어 스트리밍 등 빠른 응답이 중요한 서비스에 적합
■ 사용 예시
• 스트리밍, DNS 질의 등
────────────────────────────────────────────────────────────────────────────────────────────────────
□ 네트워크 계층 (OSI 7 Layer, TCP/IP Layer)
■ OSI 7 Layer
네트워크 통신 과정을 7개의 세부 계층으로 나누는 방식. 각 계층이 독립적으로 기능을 수행하는 구조
▶ OSI 7계층 정리
• 7(응용 계층, Application): 사용자 인터페이스 제공 (HTTP, FTP, SMTP 등)
• 6(표현 계층, Presentation): 데이터 표현, 압축, 암호화
• 5(세션 계층, Session): 연결 관리, 세션 유지 및 종료
• 4(전송 계층, Transport): 종단 간 신뢰성 있는 전송/빠른 비신뢰성 전송을 모두 제공 (TCP/UDP)
• 3(네트워크 계층, Network): 라우팅, 논리 주소 지정 (IP 프로토콜)
• 2(데이터 링크 계층, Data Link): 물리적 주소 지정(MAC), 오류 감지 및 수정
• 1(물리 계층, Physical): 실제 전기적 신호 전송 (케이블, 허브 등)
■ TCP/IP Layer
인터넷의 근간이 되는 TCP/IP를 기준으로 하여, 네트워크 통신을 간단히 4개의 계층으로 나누어 정의하는 방식
▶ TCP/IP 계층 정리
• 4(응용 계층, Application): HTTP, FTP, DNS, SMTP등 사용자 서비스
• 3(전송 계층, Transport): TCP, UDP를 통해 종단 간 통신
• 2(인터넷 계층, Internet): IP 프로토콜을 통해 데이터 전송 및 라우팅
• 1(네트워크 액세스 계층, Network Access): 물리적 장치 간 데이터 전송 및 오류 관리 (이더넷, MAC 주소 관리)
────────────────────────────────────────────────────────────────────────────────────────────────────
□ 클라이언트-서버 모델
네트워크상에서 컴퓨터 간 데이터를 주고받기 위한 통신 구조의 한 형태로,
특정 역할이 명확하게 분리된 클라이언트(Client)와 서버(Server)로 구성
■ 핵심 개념
▶ 클라이언트(Client)
• 사용자의 요청을 생성하여 서버에게 특정 서비스나 자원을 요청하는 컴퓨터/소프트웨어
• 웹 브라우저, 이메일 클라이언트 등
▶ 서버(Server)
• 클라이언트의 요청을 수신하고 처리하여 응답을 제공하는 컴퓨터/소프트웨어
• 웹 서버, 메일 서버, DB 서버 등
■ 작동 원리
1. 요청(Request): 클라이언트가 서버에게 필요한 데이터를 요청
2. 처리(Processing) 서버는 해당 요청을 받아 처리
3. 응답(Response): 서버가 처리 결과를 클라이언트에게 다시 전달
■ 특징
• 역할의 분리: 요청자와 제공자의 역할이 명확히 분리됨
• 확장성: 서버 성능을 높이거나 다수의 서버를 추가해 성능 확장 가능
• 중앙 집중화: 데이터 관리 및 유지보수가 용이
■ 장단점
▶ 장점
• 관리 및 유지보수 용이
• 자원의 효율적인 분배 및 관리
• 보안 관리 용이
▶ 단점
• 서버 장애 시 전체 서비스에 영향
• 서버의 트래픽 집중으로 인한 병목 현상 발생 가능
■ 활용 예시
• 웹 서비스(HTTP) / 이메일 서비스(SMTP) / DB 시스템(SQL 서버) 등
────────────────────────────────────────────────────────────────────────────────────────────────────
□ 소켓(socket, bind, listen, accept, connect, close)
네트워크상에서 데이터를 주고받기 위한 통신의 끝점(endpoint).
네트워크 프로그램에서 통신 채널을 설정하는 데 사용된다.
■ 소켓 프로그래밍 핵심 함수
• socket()
○ 네트워크 통신을 위한 소켓 생성
○ 통신 도메인, 소켓 타입, 프로토콜을 지정
• connect()
○ 클라이언트에서 서버의 소켓으로 연결 요청
○ 서버의 IP 주소와 포트 번호가 인자로 제공
• bind()
○ 생성된 소켓에 특정 IP 주소와 포트 번호를 연결
○ 주로 서버에서 사용하며, 클라이언트가 연결할 수 있는 고정된 주소 제공
• listen()
○ 바인딩된 소켓을 통해 클라이언트 연결 요청을 수신할 준비를 함
○ 백로그(backlog) 인자를 통해 연결 요청 대기 큐(queue)의 크기 설정
• accept()
○ 서버가 listen 상태에서 클라이언트의 연결 요청을 받아들일 때 사용
○ 클라이언트와의 실제 통신을 위한 새로운 소켓을 반환
○ 기존 소켓은 계속해서 다른 요청 수신 가능
■ 소켓 프로그래밍 동작 흐름
• 서버: socket -> bind -> listen -> accept
• 클라이언트: socket -> connect
────────────────────────────────────────────────────────────────────────────────────────────────────
□ 파일 디스크립터(File Descriptor)
운영체제가 관리하는 정수 형태의 고유 식별자로, 열린 파일이나 입출력 스트림의 식별에 사용된다
■ 핵심 개념
• 정수형 식별자: 파일 디스크립터는 0 이상의 정수이며, 파일이나 스트림과 연결됨
• 운영체제 관리: 각 프로세스는 독립적인 파일 디스크립터 테이블을 가지며, 이를 통해 자원을 관리
• 기본 디스크립터: 모든 프로세스는 기본적으로 0(표준 입력), 1(표준 출력), 2(표준 에러)를 가지고 있음
■ 동작 원리
파일 디스크립터는 시스템 호출(system call)을 통해 관리된다
• open(): 파일을 열고 디스크립터를 생성
• read(), write(): 파일 디스크립터를 통해 데이터를 읽거나 쓰기
• close(): 파일 디스크립터를 닫고 운영체제에서 자원을 해제
────────────────────────────────────────────────────────────────────────────────────────────────────
□ CGI / WebServer / MIME Type
■ CGI
웹 서버와 외부 프로그램 간 데이터를 주고받기 위한 표준 인터페이스
• 클라이언트가 웹 서버에 특정 요청 시, 해당 요청을 처리할 별도의 CGI 프로그램을 실행하게 됨
• CGI 프로그램은 사용자 입력을 받아 처리한 결과를 웹 서버를 통해 다시 클라이언트에게 전달
• 주로 폼 처리, 데이터베이스 질의 결과 제공 등 동적 콘텐츠 생성에 많이 활용
■ WebServer
HTTP 프로토콜을 이용해 클라이언트의 요청을 받고,
이에 대응하는 웹 콘텐츠(HTML 문서, 이미지, 비디오 등)를 클라이언트에 제공하는 역할을 한다
• 대표적인 웹 서버로는 Apache, Nginx, IIS 등이 있음
• 정적 콘텐츠뿐 아니라 CGI와 같은 인터페이스를 통해 동적 콘텐츠 생성도 지원
■ MIME Type(Multipurpose Internet Mail Extensions)
인터넷에서 전송되는 콘텐츠의 형식을 나타내는 표준
• 웹 서버는 클라이언트에게 콘텐츠 제공 시 MIME Type을 HTTP 헤더에 포함
• 이를 통해 클라이언트(주로 브라우저)가 콘텐츠의 유형을 인식하고 적절한 방식으로 렌더링하거나 실행
• 브라우저는 다양한 콘텐츠를 적절히 처리하고 사용자에게 보여줄 수 있게 됨
• 예시
○ text/html (HTML 파일)
○ image/jpeg (JPEG 이미지)
○ video/mpeg (MPEG 비디오)
'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글
[CS기초] Process와 Thread 핵심 정리 (0) | 2025.05.09 |
---|---|
[중간정리] 8주차 - HTTP, 파일 디스크립터, TCP/UDP, C언어(포인터) (0) | 2025.05.06 |
[CS기초] HTTP (요청/응답, 헤더, 메서드, 상태코드, HEAD 메서드) 핵심 정리 (0) | 2025.05.05 |
[CS기초] CGI / WebServer / MIME Type 핵심 개념 정리 (0) | 2025.05.05 |
[CS기초] Datagram Socket(UDP) vs Stream Socket(TCP) 핵심 개념 정리 (0) | 2025.05.05 |