4주차(7/22 ~ 7/28) :chapter04. 전송계층
🔗 네트워크 계층의 목표 & 역할
네트워크 간 패킷을 빠르게 목적지로 전달
하는 역할을 수행한다.
목적지로 전달
빠르게 전달
🔗 네트워크 계층의 한계
1. 패킷이 중간에 손상되었는지, 중복 전달되었는지 등의 오류 검증 하지 않는다. --> 비신뢰성, 비안정성
2. 호스트간 사전 연결 수립 작업이 없다. --> 비 연결성
즉, 네트워크 계층의 목표는 패킷을 목적지까지 빠르게 전달하는 것이지, 패킷의 안정성과 신뢰성까지 보장하지는 않는다.
➡️전송계층은 신뢰할 수 있는 연결형 통신이 가능한 프로토콜(TCP)를 제공하기에 네트워크계층의 한계를 보완할 수 있고, 포트를 통해 응용 계층의 애플리케이션을 식별함으로써 응용계층과의 연결 다리 역할을 수행한다.
➡️ 특정 애플리케이션을 식별할 수 있는 정보
친구가 보낸 사진이 내 카톡으로 도착하기까지 대략적인 과정을 생각해보면 다음과 같은 과정을 거칠것이다.
친구의 카톡(애플리케이션)-> 친구의 핸드폰(호스트)-> 네트워크 통신 -> 내 핸드폰(호스트)-> 나의 카톡(애플리케이션)
지금까지 IP주소를 통해서 호스트를 특정한다고 했는데, 결국 패킷의 최종 수신 대상은 특정 애플리케이션 프로세스(카톡)인데, 패킷이 특정 애플리케이션까지 전달되려면 패킷에 특정 애플리케이션을 식별할 수 있는 정보가 포함
되어야 하고, 이러한 정보를 PORT라고 한다.
일반적으로 IP주소 : 포트번호 형식으로 IP주소와 함께 표기되는 경우가 많다.
📌 TCP(Transmission Control Protocal)
: 신뢰할 수 있는 통신을 위한 연결형 프로토콜
: 연결 수립 & 연결 종료 과정 필요
: 데이터 송수신 시 재전송을 통한 오류 제어, 흐름 제어, 혼잡 제어 기능 수행
📌 UDP(User Datagram Protocal)
: TCP 보다는 신뢰성은 떨어지지만 비교적 빠른 통신이 가능한 비연결형 프로토콜
: UDP는 TCP에 비해 적은 오버헤드로 패킷을 빠르게 처리함. 그래서 실시간 스트리밍 서비스, 인터넷 전화처럼 실시간이 강조되는 상황에서 자주 사용
💡 UDP는 신뢰할 수없는 통신 & 비연결형통신
그렇다면 IP사용하면 되는데 왜 UDP를 사용할까? UDP만의 특징은 무엇일까?
✔️ MSS(Maximum Segment Size) TCP로 전송할 수 있는 최대 페이로드 크기
✔️ 알아둬야 할 필드
제어비트
ACK
: 세그먼트의 승인을 나타내기 위한 비트SYN
: 연결을 수립하기 위한 비트FIN
: 연결을 종료하기 위한 비트 순서번호
SYN
(연결 수립위한 비트)응답 확인 번호
ACK
(승인 나타내는 비트)✔️ 연결 수립 : 쓰리 웨이 핸드셰이크
쓰리 웨이 핸드셰이크(three-way handshake) 세 단계로 이루어진 TCP 연결수립 과정
이 과정을 거친 후 본적격인 송수신 시작됨
액티브 오픈
: 처음 연결을 시작하는 호스트의 연결 수립 과정 (호스트 A)
: 주로 클라이언트에 의해 수행(요청)
: SYN
(연결 수립위한 비트)
패시브 오픈
: 연결 요청을 받고 나서 연결 수립해 주는 호스트(호스트 B)
: 주로 서버에 의해 수행(응답)
: ACK
(세그먼트 승인 비트)
✔️ 연결 종료
송수신 호스트가 각자 한 번씩 FIN
과 ACK
를 주고 받음
액티브 클로즈
: 먼저 연결을 종료하려는 호스트에 의해 수행(호스트 A)
: FIN
(연결 종료 비트)
패시브 클로즈
: 연결 종료 요청을 받아들이는 호스트에 의해 수행(호스트 B)
: FIN
(연결 종료 비트)
✔️ 연결 수립되지 않은 상태
SYN
(연결 수립 위한 비트)✔️ 연결 수립 상태
✔️ 연결 종료 상태
FIN
(연결 종료 비트)ACK
(세그먼트 승인 비트) 보낸 후 대기상태FIN
(연결 종료 비트)💡오류 제어 방식 : 오류 확인 (원인 파악) ➡️ 재전송 (해결책)
✔️ 오류 확인 방식
중복 ACK 세그먼트 수신 시
타임 아웃 발생할 때까지 ACK 세그먼트 받지 못할 때
✔️ ARQ : 재전송 기법
Stop-and-Wait ARQ
: 제대로 전달했음을 확인하기 전까지(ACK
) 새로운 메시지 보내지 않는 방식
: 신뢰성 높으나 네트워크 호율 낮음
파이프라이닝 방식
: 연속해서 메시지 전송할 수 있는 방식
: ACK
(세그먼트 승인 비트) 도착하기 전이더라도 여러 세그먼트 보낼 수 있음
: 오늘날 TCP는 파이프라이닝이 사용되는 Go-Back-N ARQ 와 Selective Repeat ARQ를 기반으로 작동
: 여러 세그먼트 전송 가능
: 문제 발생한 세그먼트 있으면 그 후에 전송한 모든 세그먼트 다시 재전송
: 누적 확인 응답
: 문제 발생한 세그먼트 있으면 해당 세그먼트만 다시 재전송
: 개별 확인 응답
윈도우 (Window)
➡️ 송신 호스트가 파이프라이닝할 수 있는 최대량
송신 호스트는 파이프라이닝 기법을 사용한다고해서 무작성 많은 세그먼트를 보내는 것이 아니라 수신 호스트가 수용할 만큼의 세그먼트를 알고 그에 적합한 세그먼트를 보내야 한다.
- 혼잡(congstion)
트래픽으로 인해 패킷의 처리 속도가 늦어지거나 유실될 우려가 이는 네트워크 상황
➡️ 혼잡 윈도우
: 송신 호스트가 혼잡 없이 전송할 수 있을 법한 데이터 양
Ch.04(04-1) 확인 문제 1번(p.206) 풀고 설명하기
IP와 연관된 통신 특성으로 알맞은 단어는?
: 비신뢰성 -> 패킷 전송 시 패킷의 중복, 누락, 오류 등의 안정성 보장하지 않음
: 비연결성 -> 송수신 호스트간에 사전 연결 수립 작업을 거치지 않는 통신 특성
--> 즉 , IP는 목적지까지 패킷을 빠르게 전달하는 목적에 집중된 프로토콜로, '목적지까지 패킷이 잘 도착했는지는'는 확인하지 않는다.
이러한 IP의 한계를 보완하는 것이 전송계층의 TCP이다.
'목적지까지 패킷이 잘 도착했는지를 확인하는 (패킷 중복, 누락, 오류 확인, 흐름제어 등) 신뢰성과 송수신 호스트간에 사전 연결 수립하는 연결성은 전송계층 프로토콜인 TCP의 특징이다.
Ch.04(04-2) 확인 문제 2번(p.225) 풀고 설명하기
정답 : ACK
세그먼트 : 세그먼트 승인을 나타내기 위한 비트
TCP의 쓰리웨이 핸드셰이크
는 연결 수립
단계에서 거치는 과정
작업 관리자에서 프로세스별 PID 확인해 보기