혼자 공부하는 네트워크(4)

Erdos·2025년 2월 14일
0

혼공단

목록 보기
16/17
post-thumbnail

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,21FTP
22SSH
23TELNET
53DNS
67, 68DHCP
80HTTP
443HTTPS

2.등록된 포트

등록된 포트설명
1194OpenVPN
1433Microsoft SQL Server DB
3306MySQL DB
6379Redix
8080HTTP 대체

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 주소:포트 번호로써 해당 호스트에게 패킷을 전달하는 기능

  • 언제 필요한가?
  1. 원격접속(SSH, RDP): 외부에서 내 컴퓨터로 원격 접속하려면
  2. 웹 서버 운영(아파치, 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): 메시지를 전송한 뒤 그에 대한 답변을 받는 데까지 걸리는 시간

  1. 중복된 ACK 세그먼트를 수신했을 때 오류가 생겼음을 감지한다.
  2. 타임 아웃이 발생하면 문제가 생겼음을 인지

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) 풀고 설명하기

  1. IP와 연관된 통신 특성
  • 비신뢰성, 비연결형
  1. TCP 쓰리 웨이 핸드셰이크 과정을 나타내는 그림입니다. 괄호 안에 들어갈 말은?
    ACK 세그먼트

추가 숙제

작업 관리자에서 프로세스별 PID 확인해 보기

profile
수학을 사랑하는 애독자📚 Stop dreaming. Start living. - 'The Secret Life of Walter Mitty'

0개의 댓글

관련 채용 정보