✅혼자 공부하는 네트워크 | 📖용어노트
4주차 (7/22 ~ 7/28) | Chapter 04 | Ch.04(04-1) 확인 문제 1번(p.206), (04-2) 확인 문제 2번(p.225) 풀고 설명하기 | 작업 관리자에서 프로세스별 PID 확인해 보기 |
여름방학 (7/29 ~ 8/4) | 🍀럭키비키 즐거운 여름방학이잔앙🍀 | ||
5주차 (8/5 ~ 8/11) | Chapter 05 | Ch.05(05-1) 확인 문제 1번(p.271), (05-2) 확인 문제 2번(p.307), 풀고 설명하기 | HTTP 요청 메시지 확인해 보기 |
6주차 (8/12 ~ 8/18) | Chapter 06~07 | Ch.06(06-2) 확인 문제 1번(p.379), (07-2) 확인 문제 2번(p.407) 풀고 설명하기 | 와이어샤크에서 실제 TCP/UDP 패킷 확인해 보기 |
전송 계층 : 네트워크 계층(IP)과 응용 계층(Application) 사이에 위치하면서, 신뢰성 있는 통신을 가능케 하고(TCP/UDP) 요청하거나 받은 애플리케이션을 식별할 수 있게 함(Port)
네트워크 계층과 연결되는 전송 계층 : 네트워크 계층(IP)은 통신을 가능하게 하지만(주소 역할), 비신뢰성, 비연결성의 특징을 가지고 있다.
패킷이 성공적으로, 순서대로 전송되었다는 보장이 없고, 그냥 해당 주소로 보낼 뿐이다.
네트워크 계층에는 ICMP라는 프로토콜을 통해 송신지의 호스트와의 네트워크 연결에 문제는 없는지, 요청을 보내면 응답이 잘 오는 지는 확인할 수 있지만 말 그대로 '확인'일 뿐이고, 신뢰성 있게 정보를 주고받는다는 '보장'은 하지 않는다.

이에 대한 보장을 전송 계층의 TCP가 돕는다. TCP는 수신지와 송신지 상에 가상의 회선을 설정하고 각종 제어를 통해 신뢰성있는 통신을 '보장'한다. 물론 신뢰성 있는 통신의 '보장'보다 '속도'가 더 중요한 상황을 위한 UDP도 존재한다.
응용 계층과 연결되는 전송 계층 : 패킷을 송신지까지 전달하는 데에 성공했다. 그럼 그걸 어느 프로그램(프로세스)에 전달해야 할까? 이를 돕는 것이 응용 계층과 연결되는 전송 계층 부분이다.
ex) 검색을 하기 위해 크롬 4개를 켜고 4개 모두 구글에 접속했다. 접속된 홈페이지 모양은 모두 같고, 구글에 해당 페이지를 달라고 요청한 IP, 전송받은 데이터 모두 별반 다르지 않을 텐데 어떻게 4개의 브라우저를 구분해서 데이터를 보내줬을까? 'Port' 덕분
포트 종류 | 포트 번호 범위 |
잘 알려진 포트 | 0~1023 |
등록된 포트 | 1024~49151 |
동적 포트 | 49152~65535 |
포트는 2의 16승(16비트)까지 표현 가능하며 총 65536개가 존재함.
이 중, 웹브라우저에는 49152~65535 사이의 동적 포트가 지정되어 여러 개를 켜도 구분 가능함.
TCP handshake

TCP 연결 수립은 3way-handshake로
호스트 A(클라이언트)(나 보낼 거 있어. or 받을 거 있어. 통신하자 / SYN) -> 호스트 B(서버)(확인. 나도 열게 / SYN/ACK) -> 호스트 A(열린 거 확인 / ACK)
TCP 연결 종료는 4way-handshake로
호스트 A(다 보냈어. 닫자 / FIN) -> 호스트 B(확인. / ACK) / 호스트 B(나 닫았어. / FIN) -> 호스트 A(확인. / ACK)
TCP의 오류제어, 흐름제어, 혼잡제어
오류제어 : 세그먼트를 보낸 후 수신 측에서 올바른 순서의 세그먼트를 요구하지 않거나, ACK 세그먼트를 아예 보내지 않아 타임아웃이 났을 때 세그먼트를 재전송해서 오류를 제어함
재전송 기법(ARQ(Automatic Repeat Request)) 종류
Stop-and-Wait : 세그먼트를 하나 보낸 후 다음 세그먼트를 보내달라는 ACK 세그먼트가 오면 보냄(안정적이나 회선에 대한 이용 효율이 떨어져 요즘 사용 x)
Go-Back-N : 세그먼트를 계속 보내다가 수신 측에서 올바른 다음 순서의 ACK 세그먼트를 일정 시간 이상 보내지 않으면 타임아웃이 발생하며 해당 순서의 세그먼트부터 다시 보냄
ex) 1, 2, 3, 4, 5~ 세그먼트를 쭉 보내는데 3번 세그먼트의 ACK가 계속 오지 않음.
이때, 수신 측은 받은 3번 세그먼트에 문제가 있었고 추가적으로 들어오는 세그먼트(4, 5~)들을 다 지우고 ACK를 안 보내버림. 그럼 타임아웃 이후 송신 측은 3번부터 쭉 다시 보냄.
Selective Repeat : 선택적으로 못 받은 세그먼트 재전송. 단 송신 측과 수신 측 모두 Selective Repeat를 지원해야 함. 만약 지원을 안 하면 Go-Back-N으로.
ex) 1, 2, 3, 4, 5~ 세그먼트를 쭉 보내는데 3, 5번 세그먼트의 ACK가 누락되고 4, 6~에 대한 ACK 받음.
송신 측은 이후 3, 5번 세그먼트를 다시 보냄.
흐름제어 : 수신 측은 한 번에 받을 수 있는 세그먼트의 크기가 한정되어 있음. 이를 넘으면 수신 측에서는 처리가 불가능하기 때문에, 처리할 수 있는 크기를 TCP 헤더의 윈도우에 표시. 송신 측에서는 이를 보고 적당한 크기의 윈도우로 보냄.
혼잡제어 : 송신 측의 네트워크 상태에 따라 보낼 데이터 양을 조절함.(혼잡 윈도우라는 것을 통해 / 혼잡 윈도우는 송신 측의 네트워크 상황에 따른 문제이기 때문에, 따로 header에 없음)
원래 송신 측 호스트에서 혼잡 윈도우를 계산해서 수행했지만, 요즘은 네트워크 중간 장치(주로 라우터)의 도움을 받는 명시적 혼잡 알림(ECN(Explicit Congestion Notification))이라는 기술을 통해 좀 더 빨리 혼잡 상황에 대한 감지가 가능해 짐.
혼잡 제어 종류
느린 시작 알고리즘 : 혼잡 윈도우의 크기를 지수적으로 증가시킴. 그러다 따로 정해진 느린 시작 임계치 값 이상이 되거나, 타임아웃이 발생하거나, 수신측으로부터 세 번의 중복 ACK를 받으면 혼잡 윈도우의 크기를 조절함
느린 시작 임계치 값 이상이 될 시 : 느린 시작 종료 -> 혼잡 윈도우를 절반으로 초기화 -> 혼잡 윈도우를 1씩 증가시키는 혼잡 회피 수행
타임아웃 발생 : 혼잡 윈도우 값을 1로, 느린 시작 임계치를 혼잡이 감지되었을 시점의 혼잡 윈도우 값의 절반으로 초기화 후 느린 시작 재개
수신 측으로부터 세 번의 중복 ACK 발생 : 해당 번호의 세그먼트를 바로 보내주고(빠른 재전송) 바로 혼잡 회피를 수행(빠른 회복 알고리즘)
접기 시작
p.206 확인문제 1번
IP와 연관된 통신 특성으로 알맞은 단어를 <보기>에서 골라 보세요. 비신뢰성, 비연결성
<보기> 신뢰성, 연결성, 비신뢰성, 비연결성
p.225 확인문제 2번
다음은 TCP 쓰리 웨이 핸드셰이크 과정을 나타내는 그림입니다. 괄호 안애 들어갈 말을 <보기>에서 골라 보세요. ACK
<보기> SYN, ACK, FIN
참조
'정리 > 혼자 공부하는 네트워크(혼공네)' 카테고리의 다른 글
[혼공네] 6주차 챕터 6, 7 정리 (0) | 2024.08.15 |
---|---|
[혼공네] 5주차 응용 계층 정리 (0) | 2024.08.04 |
[혼공네] 3주차 네트워크 계층 정리(ip) (0) | 2024.07.21 |
[혼공네] 2주차 물리 계층과 데이터 링크 계층 정리 (0) | 2024.07.14 |
[혼공네] 1주차 OSI 7 모델과 TCP/IP 차이점 (0) | 2024.07.06 |