[CS기초] 8주차 개념 정리

2025. 5. 6. 11:57·크래프톤 정글/CS기초(키워드, 개념정리)

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
'크래프톤 정글/CS기초(키워드, 개념정리)' 카테고리의 다른 글
  • [CS기초] Process와 Thread 핵심 정리
  • [중간정리] 8주차 - HTTP, 파일 디스크립터, TCP/UDP, C언어(포인터)
  • [CS기초] HTTP (요청/응답, 헤더, 메서드, 상태코드, HEAD 메서드) 핵심 정리
  • [CS기초] CGI / WebServer / MIME Type 핵심 개념 정리
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기 N
      • 크래프톤 정글 N
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리) N
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어) N
        • 마이 정글(WIL, 에세이) N
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[CS기초] 8주차 개념 정리
상단으로

티스토리툴바