일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 처리량
- redis
- 선언형
- 노출모듈패턴
- modebit
- PERT/CPM
- CPU 스케줄링
- 스레싱
- 프로젝트 계확
- 다크모드
- 지연시간
- 개발 모델
- 메모리
- 럼바우
- 프로그래머스 데브코스
- MongoDB
- 링크계층
- 함수형
- 프록시패턴
- 3-way handshake
- MVVM
- 인터넷계층
- M/M
- 페이징 교체 알고리즘
- 요구사항 분석
- 관계형 데이터베이스
- nosql
- 4-way handshake
- 절차형
- 다단계 큐
- Today
- Total
노트
TCP/IP 4계층 모델1(애플리케이션, 전송 계층) 본문
1. TCP/IP 4계층 구조
애플리케이션 계층 | FTP/HTTP/SSH/SMTP/DNS |
전송 계층 | TCP/UDP/QUIC |
인터넷 계층 | IP/ARP/RARP |
링크 계층 | 이더넷 |
애플리케이션 계층 (Application Layer)
FTP, HTTP, SSH, DNS 등 응용 프로그램이 사용되는 프로토콜 계층
웹 서비스, 이메일 등 서비스를 실질적으로 제공하는 층
FTP(File Transfer Protocol): 장치와 장치 간의 파일을 전송하는 데 사용되는 표준 통신 프로토콜
SSH(Secure Shell): 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
HTTP(HyperText Transfer Protocol): World Wide Web을 의한 데이터 통신의 기초이자 웹 사이트를 이용하는 데 사용
SMTP(Simple Mail Transfer Protocol): 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
DNS(Domain Name System): 도메인 이름과 IP 주소를 매핑해 주는 서버
전송(Transport) 계층
송신자와 수신자를 연결하는 통신 서비스와 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어를 제공
애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할, 대표적으로 TCP와 UDP
TCP(Transmission Control Protocol)
- 패킷 사이의 순서를 보장
- 연결지향 프로토콜을 사용해 연결하여 신뢰성을 구축해서 수신 여부를 확인
- 가상회선 패킷 교환 방식을 사용
UDP(User Datagram Protocol)
- 순서를 보장 X
- 수신 여부 확인 X
- 단순히 데이터만 주는 데이터그램 패킷 교환 방식을 사용
가상회선 패킷 교환 방식: 각 패킷에는 가상회선 식별자가 포함, 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 '순서대로' 도착하는 방식
데이터그램 패킷 교환 방식: 패킷이 독립적으로 이동, 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 최적의 경로를 선택, 도착한 '순서가 다를 수' 있는 방식
TCP 연결 성립 과정
TCP는 신뢰성을 확보할 때 3-way handshake라는 작업을 진행

1. SYN 단계: 클라이언트는 서버에 클라이언트의 ISN를 담아 SYN에 전송
클라이언트가 송신하는 SYN → 클라이언트의 ISN: x
2. SYN + ACK 단계: 서버는 클라이언트의 SYN을 수신하고 서버의 ISN을 보내며 승인번호로 클라이언트 ISN+1을 전송
서버가 송신하는 SYN → 서버의 ISN: y
ACK → 승인번호: x+1
3. ACK 단계: 클라이언트는 서버의 ISN+1 한 값인 승인번호를 담아 ACK를 서버에 전송
클라이언트가 송신하는 ACK → 승인번호: y+1
SYNchronization: 연결 요청 플래그
ACKnowledgement: 응답 플래그
ISN(Initail Sequence Numbers): 초기 네트워크 연결을 할 때 할당된 32비트 고우 시퀀스 번호
TCP는 이 과정 이후 신뢰성이 구축되고 데이터 전송을 시작
TCP 연결 해체 과정
TCP가 연결을 해제할 때는 4-way handshake 과정이 발생

1. 먼저 클라이언트가 연결을 닫으려고 할 때 FIN으로 설정된 세그먼트를 전송,
클라이언트는 FIN_WAIT1 상태에 들어가고 서버의 응답을 대기
2. 서버는 ACK라는 승인 세그먼트 전송하고 CLOSE_WAIT 상태에 들어감.
클라이언트는 세그먼트를 받으면 FIN_WAIT2 상태에 들어감.
3. 서버는 ACK를 보내고 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트를 전송하고 LAST_ACK 상태에 들어감.
4. 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내서 서버는 CLOSED 상태가 됨.
이후 클라이언트는 어느 정도의 시간을 대기한 후 연결이 닫히고 CLOSED. 클라이언트와 서버의 모든 자원의 연결이 해제
이 과정에서 클라이언트가 TIME_WAIT 상태로 어느 정도 대기한 후 연결을 닫는 이유는
1) 지연 패킷이 발생할 경우를 대비.
패킷이 뒤늦게 도달하고 이를 처리하지 못하면 데이터 무결성 문제가 발생
2) 두 장치가 연결이 닫혔는지 확인하기 위함.
만약 서버가 LAST_ACK 상태에서 클라이언트의 ACK를 대기 중인데 클라이언트가 이미 닫혀있으면 새로운 열결을 시도할 때 계속 LAST_ACK로 되어있기 때문에 접속 오류가 발생할 수 있음.
TIME_WAIT: 소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태. 지연 패킷 등의 문제점을 해결하는 데 사용
OS마다 설정 시간이 조금씩 다름. ex) 우분투는 60초, 윈도우는 4분으로 설정
데이터 무결성(Data Integrity): 데이터의 정확성과 일관성을 유지하고 보증하는 것
'면접을 위한 CS 전공지식 노트'를 기반으로 작성한 글입니다.
'CS' 카테고리의 다른 글
네트워크 기기 (0) | 2024.01.18 |
---|---|
TCP/IP 4계층 모델2(인터넷, 링크 계층) (0) | 2024.01.17 |
네트워크 처리량, 토폴로지 (0) | 2024.01.15 |
프로그래밍 패러다임 (0) | 2024.01.14 |
디자인 패턴2 (2) | 2024.01.13 |