chapter04 전송 계층
4주차
- chapter4
- Ch.04(04-1) 확인 문제 1번(p.206), (04-2) 확인 문제 2번(p.225) 풀고 설명하기
- 작업 관리자에서 프로세스별 PID 확인해 보기
04-1 전송 계층 개요: IP의 한계와 포트
신뢰할 수 없는 통신과 비연결형 통신
1.IP의 한계
- 신뢰할 수 없는 통신(unreliable protocol)=최선형 전달(best effort delivery): 패킷이 수신지까지 제대로 전송되었다는 보장을 하지 않는다.
- 비연결형 통신(connectionless protocol)
IP 한계를 보완하는 전송 계층

응용 계층과의 연결 다리, 포트
프로세스란
- 실행 중인 프로그램
- 프로그램이 실행되기 전까지는 데이터 덩어리지만, 프로그램이 실행되는 순간 프로세스가 되어 메인 메모리에 적재된다.
- PID(Process ID): 프로세스의 고유한 식별 정보

- 포트: 네트워크에서 전송된 패킷이 특정 애플리케이션까지 도달하도록 식별하는 번호. 컴퓨터가 외부와 통신할 때 사용하는 가상의 출입구 역할을 하며, IP 주소와 함께 특정 프로세스를 식별하는 중요한 요소다.
1.잘 알려진 포트
잘 알려진 포트 번호 | 설명 |
---|
20,21 | FTP |
22 | SSH |
23 | TELNET |
53 | DNS |
67, 68 | DHCP |
80 | HTTP |
443 | HTTPS |
2.등록된 포트
등록된 포트 | 설명 |
---|
1194 | OpenVPN |
1433 | Microsoft SQL Server DB |
3306 | MySQL DB |
6379 | Redix |
8080 | HTTP 대체 |
3.동적 포트
- 49152 ~ 65535 => dynamic port, private port, ephemeral port
- 서버로서 동작하는 프로그램의 포트 번호는 사전에 암묵적으로 정해진 경우가 많다.
포트 기반 NAT
NAT: IP 주소를 변환하는 기술
- private IP를 public IP로 변환하는 기술
- NAPT(Newtork Address Port Translation)=APT(Address Port Translation)
- 네트워크 내부에서 사용할 IP 주소와 네트워크 외부에서 사용할 IP 주소를 N:1로 관리할 수 있음
- 단순한 IP 주소만 변환하는 것이 아니라 포트 번호까지 변환하는 방식
포트포워딩(port forwarding): 네트워크 내 특정 호스트에 IP 주소와 포트 번호를 미리 할당하고 해당 IP 주소:포트 번호로써 해당 호스트에게 패킷을 전달하는 기능
- 원격접속(SSH, RDP): 외부에서 내 컴퓨터로 원격 접속하려면
- 웹 서버 운영(아파치, Nginx): 내부 네트워크에서 웹 서버(80번 포트)를 운영하는 경우
- 포트를 잘못 열어두면 해킹 위험이 있다. 그러니 필요하지 않은 포트는 최소한으로 개방.
- ICMP(Internet Control Message Protocol):IP의 신뢰할 수 없는 전송 특성과 비연결형 전송 특성을 보완하기 위해 전송 과정의 피드백 메시지를 제공하는 프로토콜
04-2 TCP와 UDP
- TCP(Transmission Control Protocol): 신뢰할 수 있는 통신을 위한 연결형 프로토콜
- UDP(User Datagram Protocol): TCP보다 신뢰성은 떨어지지만 비교적 빠른 통신이 가능한 비연결형 프로토콜
TCP 통신 단계와 세그먼트 구조

출처
1.제어 비트(control bits): flag bits. 세그먼트에 대한 부가 정보를 나타냄
- ACK: 세그먼트 승인을 나타내는 비트
- SYN: 연결을 수립하기 위한 비트
- FIN: 연결을 종료하기 위한 비트
2.순서 번호와 확인 응답 번호
- TCP 신뢰성을 보장하기 위해 사용되는 중요한 필드
- 순서 번호: 세그먼트의 올바른 송수신 순서를 보장하기 위한 번호. 세그먼트 데이터의 첫 바이트에 부여됨. 초기 순서 번호 + 송신한 바이트 수
- 확인 응답 번호: 순서 번호에 대한 응답. 수신자가 다음으로 받기를 기대하는 순서 번호. 일반적으로 수신한 순서 번호 + 1
TCP 연결 수립과 종료
연결 수립: three-way-handshake
TCP 상태
- stste: 현재 어떤 통신 과정에 있는지를 나타내는 정보
- stateful 프로토콜

연결이 수립되지 않은 상태
- CLOSED: 아무 연결이 없는 상태
- LISTEN: 일종의 연결 대기 상태
연결 수립 상태

출처: 위키백과
- SYN-SENT: 액티브 오픈 소트느가 SYN 세그먼트를 보낸 뒤 대기하는 상태
- SYN-RECEIVED: 패시브 오픈 호스트가 SYN + ACK 세그먼트를 보낸 뒤 ACK 세그먼트를 기다리는 상태
- ESTABLISHED: 연결이 확립되었음을 나타내는 상태
연결 종료 상태
- FIN-WAIT-1
- CLOSE-WAIT
- FIN-WAIT-2
- LAST-ACK
- TIME-WAIT: 일정 시간을 기다린 뒤 CLOSED로 전이
UDP 데이터그램 구조
- UDP: TCP와 달리 비연결형 통신을 수행하는 신뢰할 수 없는 프로토콜
- stateless 프로토콜
- 체크섬: 데이터그램 전송 과정에서 오류 발생이 발생했는지 검사하기 위한 필드. 정보 훼손 여부만 판단.
- TCP에 비해 적은 오버 헤드로 패킷을 빠르게 처리할 수 있음
- 실시간 스트리밍 서비스, 인터넷 전화처럼 실시간성이 강조되는 상황에서 많이 쓰인다
04-3 TCP의 오류, 흐름, 혼잡 제어
요기는 이해가 어려워서 우선 keep..
오류 제어: 재전송 기법
RTT(Round Trip Time): 메시지를 전송한 뒤 그에 대한 답변을 받는 데까지 걸리는 시간

- 중복된 ACK 세그먼트를 수신했을 때 오류가 생겼음을 감지한다.
- 타임 아웃이 발생하면 문제가 생겼음을 인지
ARQ:재전송 기법
- Automatic Repeat Request
- Stop-And-Wait ARQ: 제대로 전달했음을 확인하기 전까지는 새로운 메시지를 보내지 않는 방식. 높은 신뢰성 보장
- Go-Back-N ARQ: 파이프라이닝(pipelining) 방식을 활용해 여러 세그먼트를 전송하고 도중에 잘못 전송된 세그먼트가 발생할 경우 해당 세그먼트부터 전부 다시 전송하는 방식. 누적 확인 응답(CACK:Cumulative Acknowledgment)
- Selective Repeat ARQ: 선택적으로 재전송하는 방법. 개별 확인 응답(Selective Acknowledgment)
흐름 제어: 슬라이딩 윈도우
- 수신 버퍼: 수신된 세그먼트가 애플리케이션 프로세스에 의해 읽히기 전에 임시로 저장되는 공간
- 버퍼 오버플로
- 흐름 제어: 버퍼 오버플로를 방지하고자 송신 호스트가 수신 호스트의 처리 속도를 고려하여 송수신 속도를 균일하게 유지하는 것
- 윈도우: 송신 호스트가 파이프라이닝할 수 있는 되대량
혼잡 제어
- 많은 트래픽으로 인해 패킷의 처리 속도가 늦어지거나 유실될 우려가 있는 네트워크 상황
- 혼잡 윈도우(congestion window): 혼잡 없이 전송할 수 있을 법한 데이터양
- 혼잡 제어 알고리즘(congestion control algorithm): 혼잡 제어를 수행하는 일련의 방법
1.느린 시작 알고리즘(slow start)
2.혼잡 회피 알고리즘(congestion avoidance)
3.빠른 회복 알고리즘
기본 숙제
Ch.04(04-1) 확인 문제 1번(p.206), (04-2) 확인 문제 2번(p.225) 풀고 설명하기
- IP와 연관된 통신 특성
- TCP 쓰리 웨이 핸드셰이크 과정을 나타내는 그림입니다. 괄호 안에 들어갈 말은?
ACK 세그먼트
추가 숙제
작업 관리자에서 프로세스별 PID 확인해 보기
