“데이터를 목적지까지 안전하고 빠르게 전달하는 기능인 라우팅을 담당”
송신 호스트가 전송한 데이터가 어떤 경로를 통해 수신 호스트까지 전달되는지를 결정하는
라우팅 문제를 처리.
흐름 제어 : 송수신 호스트 사이의 논리적인 점대점 전송 속도를 다룸.
혼잡 제어 : 네트워크에 트래픽이 과도하게 증가하면 전송 속도가 떨어지는 혼잡 발생. 흐름 제어보다 더 넓은 관점에서 네트워크의 전송 능력 문제를 다룸.
세그먼테이션 : 데이터를 전송하기 위해 패킷을 분할하는 것.
주요 프로토콜 : IP, ICMP, IGMP, ARP/RARP
장비 : 라우터, 공유기
데이터 단위 : packet
“네트워크 구성 형태에 대한 정보를 저장해둔 라우팅 테이블을 이용하여목적지까지 최선의 패킷 전달 경로를 선택하여 전송”
라우팅 테이블 : 패킷 전송 과정에서 라우터들이 적절한 경로를 쉽게 찾도록 하기 위한 도구. 최종 목적지가 되는 호스트의 주소 값, 이웃 라우터인 다음 홉의 정보를 포함.
동적 라우팅 : 라우터에서 사용하는 경로 정보를 네트워크 상황에 따라 적절하게 변경. 현재의 네트워크 상황을 고려하여 최적의 경로 정보 선택 가능. 경로 정보를 수집하고 관리하는 등의 복잡한 과정이 필요.
기본적으로 전송 경로의 중간에 위치하는 라우터의 개수인 홉의 수로 판단.
최단 경로 라우팅 : 패킷이 목적지에 도달할때까지 거치는 라우터의 수가 최소화될 수 있도록 경로를 선택. 가장 짧은 경로를 선택.
플러딩 : 라우터가 자신에게 입력된 패킷을 출력 가능한 모든 경로로 중개.
라우터가 자신과 직접 연결된 이웃 라우터와 라우팅 정보를 교환.
구현을 위해 링크 벡터, 거리 벡터, 다음 홉 벡터라는 필수 정보를 관리.
-> 링크 벡터 : 이웃 네트워크에 대한 연결 정보
-> 거리 벡터 : 개별 네트워크까지의 거리 정보
-> 다음 홉 벡터 : 개별 네트워크로 가기 위한 다음 홉 정보
RIP 프로토콜 : 거리 벡터 방식을 사용하는 내부 라우팅 프로토콜. 소규모 네트워크 환경에 적합. 홉 카운트를 통해 최적의 경로를 찾아냄. -> 속도나 회선의 상황을 반영하지 못함.
개별 라우터가 이웃 라우터까지의 거리 정보를 구한 후, 네트워크에 연결된 모든 라우터에 통보.
각 라우터가 상당한 양의 정보 전송을 요구 받고, 링크 상태가 많이 변경되면 시간이 많이 소요되는 거리 벡터 라우팅 프로토콜의 단점을 극복.
이웃 라우터와 연결된 상황에 변화가 있을 때에만 정보를 전달.
OSPF 프로토콜 : 특정 라우터에서 다른 라우터까지의 최단 거리를 찾는 프로토콜. 최저 시간 경로를 최적 라우팅 경로로 결정. 최단 경로를 선택하기 위해 Dijkstra의 SPF 알고리즘을 사용. RIP는 30초마다 라우팅 정보를 업데이트하는 반면, OSPF는 링크에 상태 변화가 있을 시에 즉각 Flooding을 해주어 재설정이 매우 빠름.
거리 벡터 라우팅 프로토콜의 RIP나 링크 상태 라우팅 프로토콜의 OSPF는 내부 라우팅 용도.
외부 라우팅 프로토콜은 외부의 다른 AS(하나의 자율 시스템) 간의 라우팅에 사용.
경로 벡터 라우팅 프로토콜 : 목적지를 찾아갈 때, 거리가 아닌 경로를 기반으로 하여 라우팅.목적지까지의 거리에 의존하지 않고 경로 자체의 분석에 근거해 라우팅.
BGP : 대규모 네트워크에서 사용되며, 경로 벡터 라우팅 프로토콜로 분류. 인터넷 상에서 다른 AS 간에 라우팅 정보를 교환하기 위한 외부 게이트웨이 프로토콜.
혼잡 : 네트워크의 트래픽이 과도하게 증가해 전송 속도가 떨어지는 것.
데이터 전송 경로의 선택에 따라 네트워크 혼잡에 영향이 감.
트래픽 성형 : 혼잡은 트래픽이 특정 시간에 집중되는 현상에서 기인하는 경우가 많음. 송신 호스트가 전송하는 패킷의 발생 빈도가 네트워크에서 예측할 수 있는 일정한 전송률로 이루어지게 하는 기능.
ECN 패킷 : 라우터가 트래픽의 양을 모니터링하여 출력 선로의 사용 정도가 한계치를 초과하면 주의 표시를 함. 주의 표시한 방향의 경로는 혼잡이 발생할 가능성이 높으므로 특별 관리.
“네트워크 상에서 목적지 호스트를 식별하고 찾아가기 위한 논리적 주소”
IPv4 : 8비트 씩 4개로, 32비트 길이. 네트워크를 식별할 수 있는 부분과 호스트를 식별할 수 있는 부분.
IPv6 : IPv4의 주소 부족 문제 때문에 탄생. 16진수 표현. 128비트(16바이트) 길이. 잘 사용되고 있지는 않음.
“IP의 비신뢰성을 보완. 오류 보고 및 제어”
IP는 단독으로 신뢰할 수 있는 전달을 보장하지 않음.
=> 정상적으로 통신이 이루어졌는지 확인 X.
추가적으로 ICMP를 이용하여 IP 패킷 전송 중에 오류 발생시 오류 발생 원인을 알려주거나 네트워크 상태를 진단.
+ 오류 보고 메시지 : IP 패킷을 전송하는 과정에서 발생하는 문제를 보고.
+ 질의 메시지 : 라우터 혹은 다른 호스트들의 정보를 획득.
“멀티캐스팅에 필요한 그룹 관리”
멀티캐스팅 : 특정 그룹에 속하는 모든 호스트에 메시지를 전송하는 방식.
이 때, 멀티캐스팅에 필요한 그룹을 생성, 제거, 가입, 탈퇴 등 관리하는 프로토콜이 IGMP.
호스트가 멀티캐스트 그룹 구성원을 인접한 라우터에게 알림.
“IP주소를 MAC 주소로 변환”
ARP : 주소 변환 프로토콜. 다른 호스트에 데이터를 전송하기 위해서 수신 호스트의 MAC 주소가 필요. 이때, 논리적인 IP 주소로 MAC 주소를 얻을 수 있는 프로토콜.
“서로 다른 네트워크를 연결해주는 장비”
“패킷에 따라 최적의 네트워크 경로를 지정해 데이터를 전송해주는 장비”
네트워크와 네트워크 간의 경로를 설정하고, 가장 빠른 길로 전송해주는 네트워크 장비.
라우팅 경로 지정 : 패킷의 목적지 IP주소를 확인하고 목적지까지 가장 효율적인 경로를 찾아냄.
브로드캐스트 컨트롤 : 목적지 주소를 모르면 모든 포트로 플러딩하는 스위치와 달리 목적지가 명확할 때에만 전송을 허락.
프로토콜 변환 : 들어온 패킷의 2계층까지의 헤더 정보를 벗겨내고 3계층 주소를 확인. 2계층 헤더 정보를 새로 입혀 내보냄. 이를 통해 서로 다른 프로토콜로 구성된 네트워크를 연결 가능.
“사설 IP를 제공하는 NAT 기능에 특화 된 기기”
NAT : IPv4 체계에서 사용할 수 있는 주소의 개수가 한정되어 있기 때문에 모든 컴퓨터에 고유의 IP를 할당하기는 어려움. 따라서 한 네트워크에 속해있는 컴퓨터끼리만 알 수 있는 내부용 사설 IP 주소를 할당하고 라우터는 내부 IP 주소와 외부 IP 주소를 맵핑해서 주고받음.
“TCP(연결지향적)와 UDP(비신뢰성)를 이용하여 단대단 통신을 제공”
송수신 프로세스가 연결되어 단대단 통신. 신뢰성 있는 데이터 교환을 제공.
하위 계층은 호스트와 호스트 사이의 데이터 전송 과정에서 발생하는 문제들만 반영.전송 계층에서는 실제 통신의 당사자인 프로세스 사이의 통신 문제를 다룸.
연결 제어 : 패킷 전달 전에 목적지 시스템의 전송 계층과 연결 설정. (TCP)
흐름 제어 : 데이터링크 계층과 같은 흐름제어 제공. But 종단에서 종단까지 제공.
오류 제어 : 종단에서 종단까지의 오류 제어 제공. 데이터 순서 제어, 재전송.
혼잡 제어 : TCP에서는 종단 간의 혼잡을 제어. Ack 수신 여부로 네트워크 상황을 판단하여 송신 데이터의 크기를 조절해 혼잡 상황을 제어.
주요 프로토콜 : TCP, UDP, RTP
장비 : 로드밸런서 - 데이터 단위 : TCP-segment, UDP-datagram
AIMD : 혼잡 발생 시 해결하는 방식. 조금씩 패킷을 보내는 양을 늘리다가 데이터가 loss 되었을 시, 보내는 packet의 양을 절반으로 줄임.
Slow Start : Loss가 발생하기 전까지 지수적으로 패킷의 양을 늘림. 일정 수준으로 올라가면 AIMD 방식으로 변경.
Congestion Avoidance : 혼잡 상황이 발생하기 쉬운 구간에서는 1mss씩 증가.
Fast Retransmit : 세 번의 Duplicate ACK가 발생 시, Timeout을 기다리지 않고 전송 시작.
Fast Recovery : Fast Retransmit 후에 Slow Start가 아닌 Congestion Avoidance 상태에서 전송.
“상호 간에 신뢰성 있고 연결지향적인 전송을 제공”
3-way handshake를 이용해 프로세스 간에 연결을 설정.
패킷 손실, 중복, 순서 바뀜의 문제가 없도록 보장. -> 신뢰성 제공.
UDP보다 속도 느림.
“비연결적이고 신뢰성이 없지만, 빠른 데이터 전송을 제공”
수신 확인 및 순차 보장 기능이 없음. -> 신뢰성 X. 패킷 손실, 도착 순서 변경 가능.
오버헤드가 작고 속도가 빠름.
“인터넷 환경에서 실시간 멀티미디어 데이터 전송 지원”
TCP와 UDP는 실시간 서비스가 요구하는 전송 특성을 충분히 지원하지 못함.
-> TCP : 패킷의 순서와 신뢰성이 강조되어 속도가 느리고 실시간 환경에 부적합.
-> UDP : 빠른 데이터 전송이 가능하지만 데이터그램의 순서를 보장 X.
UDP의 데이터그램에 순서 번호 기능을 추가. 타임스탬프 방식 사용.
종단 간, 비디오나 오디오의 실시간 전송 지원.
RTCP : RTP 제어 프로토콜. 세션 내의 모든 참여자들에게 주기적으로 제어 패킷을 전송해 되돌아오는 데이터를 통해 QoS(서비스 품질) 모니터링 수행. 수신자에 대한 정보 수집 및 전송률 계산.
“하위 애플리케이션/프로세스의 구분을 위한 번호”
서비스나 프로세스를 식별하기 위한 논리적 단위. 동일한 IP를 가진 시스템 내에서 프로세스를 식별하기 위한 번호.
MAC이나 IP 주소가 목적지 호스트까지 찾아가는데 쓰이는 논리적 주소였다면, 해당 host 내에서 데이터가 실제로 도달해야하는 프로세스를 구분하는 데에 쓰임.
16비트로 이루어져 있으며, 65536개의 포트 번호가 존재.
포트 번호는 크게 3가지로 분류.
Well-known Port : 서버 측에 용도 별로 예약되어있는 포트 번호. 0~1023번.
Registered Port : 특정 용도로 사용되기 위해 등록된 포트 번호. 1024~49151번.
Dynamic Port : 자유롭게 사용이 가능한 동적 포트 번호. 49152~65535번.
서버를 여러 대 운영할 때, 트래픽이 늘어나면 장애가 발생해 원활한 서비스 제공이 어려울 수 있음. 이를 로드 밸런서를 이용하여 방지.
로드 밸런서는 서버에 가해지는 부하를 분산해주는 장치.한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리하여 각 서버가 원활히 운영될 수 있게 함.
네트워크 트래픽을 여러 서버에 적절히 분배.
Active한 서버에게만 요청 전송.
서비스 중단 없이 서버를 추가하거나 뺄 수 있음.(유연성 제공)
L4 로드 밸런서는 포트 번호를 바탕으로부하를 분산하는 것이 가능.
“양끝단의 응용 프로세스들의 연결(통신)을 위해 세션을 설정, 유지, 종료”
논리적인 연결 서비스인 세션을 제공, 연결을 관리하고 지속.
통신하는 사용자들을 동기화.
토큰 : 두 프로세스의 대화를 관리하기 위한 특수 메시지인 토큰을 관리하여 상호배타적인 동작 제어.
동기화 : 동기점을 추가하여 복구 지점을 설정하고 제어.
대화 기능 : 데이터 전송 과정에서 시간 경과에 따라 동기점을 부여하여 단계적인 신뢰성을 보장.
주요 프로토콜 : NetBIOS, SSL, TLS
데이터 단위 : Data / Massage
“네트워크 상에서의 양 끝단 간의 논리적 연결”
“사용자가 접속한 시점에서부터 종료하여 연결을 끝내는 시점까지들어오는 일련의 요구를 하나의 상태로 보고 그 상태를 일정하게 유지시키는 것”
다중 세션 연결 : 서버 프로세스가 다수의 클라이언트 프로세스에 동시에 여러 세션연결 설정 가능. 서비스 시간이 짧을 수록 유리. 서비스 이용 시간이 길어지면 세션 연결이길게 유지되므로 다른 클라이언트의 대기 시간이 증가.
단일 세션 연결 : 서버 프로세스가 하나의 클라이언트 프로세스만 지원. 대표 서버를 두어서대표 서버가 클라이언트마다 하위 서버 프로세스를 생성하여 각각 연결되는 형태.클라이언트의 요구마다 프로세스를 생성해야 하므로 초기 환경 구축에 따른오버헤드가 증가.
토큰을 이용해 응용 프로세스 간의 대화 관리.
토큰 보유는 토큰에 부여된 특정한 권리를 배타적으로 소유한다는 의미.
데이터 토큰 : 데이터를 전송할 수 있는 권리를 제공.
해제 토큰 : 통신 양단 간의 연결 해제 과정을 제어하기 위해 사용.
동기 토큰 : 세션 연결을 사용하는 과정에서 동기 처리가 필요한 시점에 사용.
-> 주동기 토큰 : 특정 대화 단위를 구분함.
-> 부동기 토큰 : 대화 단위 내에서 다시 작은 부분으로 나누어 처리.
“세션 연결을 사용해 데이터를 주고 받다가 오류 발생 시, 효과적으로 복구할 수 있게 해주는 기술”
동기점 부여 : 긴 전송 과정의 사이에 동기점을 부여. 동기점이 부여되었다는 의미는 해당 부분까지는 전송이 완료되었다는 의미. 전송 과정 중간에 오류가 발생해도 동기점 이후의 과정만을 복구하면 됨.
재동기 : 동기점을 이용한 일련의 복구 과정.
주동기점 : 설정된 곳은 완벽하게 처리되었다는 의미. 이전의 복구 과정은 필요하지 않음.
부동기점 : 복구에 필요한 백업 정보가 상대적으로 적음. 오류 복구가 완벽히 이루어지지 않을 수 있음. 부동기점에서 복구가 불가능하면 그 전의 부동기점으로 이동해 복구하는 과정을 반복.
대화 : 데이터 전송 과정. 시간 경과에 따라 순차적으로 동기점을 부여하여 신뢰성 보장 기능을 단계적으로 구현 가능.
세션 계층에 관련된 서비스들을 제공하여(세션 내 연결 관리 및 오류 감지)컴퓨터의 응용 프로그램들이 근거리 통신망을 통해 통신할 수 있게 해주는 프로토콜.
소프트웨어 인터페이스 및 이름 명명법을 정의하고 있는 일종의 API.
이름 서비스 : 16바이트의 문자/숫자의 조합으로 컴퓨터를 식별.
데이터그램 분배 서비스 : 브로드캐스트 지원 및 통신 오류의 발견, 회복.
세션 서비스 : 두 컴퓨터가 통신할 수 있는 연결을 성립시킴. 데이터그램보다 더 큰 메시지 처리 가능.
인터넷망에서 안전한 통신을 위해 개발된 보안 프로토콜.
보안 서비스 (기밀성, 무결성, 인증) 제공.
SSL : 안전한 통신을 보장하기 위한 프로토콜. 클라이언트와 서버 간의 데이터를 암호화하거나 인증함으로써 중요 데이터 보호. 주요하게 사용되는 곳이 HTTPS.
TLS : SSL이 일반적으로 사용되며 표준화 할 필요성이 생김. SSL 3.0 뒤에 TLS라는 이름으로 표준화.
“응용 프로세스 사이에 전송되는 데이터의 의미와 표현 방법 처리”
“번역기, 인코딩, 암호화, 압축”
표현 방식이 서로 다른 시스템 간의 통신을 위해 통일된 형식으로 변환하여 처리, 호환성 제공.
데이터 표현 : 서로 다른 표현 방식을 사용하는 컴퓨터끼리 통신하려면 변환 과정이 필요.
암호화 : 데이터 보안을 위한 암호화 및 복호화.
데이터 압축 : 전송을 보다 효율적으로 하기 위해 데이터를 압축/해제.
주요 프로토콜 : JPEG, MPEG, ASCII
데이터의 표현 방식에는 추상 문법과 전송 문법이 있음.
-> 추상 문법 : 각 컴퓨터에서 사용하는 데이터 표현 규칙.
-> 전송 문법 : 네트워크 전체에서 일관성을 지니는 데이터 표현 규칙.
각 컴퓨터는 각기 다른 추상 문법을 가지고 있기 때문에 데이터 전송 시에는 네트워크 전체에서 일관적으로 표현되는 전송 문법으로 변환하여 전송해야 함.
전송의 효율성을 위해 데이터를 압축해서 크기를 줄인 후 전송해야 전송 속도 면에서 유리.
-> 비손실 압축 : 압축 과정에서 기존의 데이터의 내용이 분실되지 않고 동일함.
-> 손실 압축 : 압축 해제한 데이터 중 일부가 손실되어 기존의 데이터와 동일하지 않음. 압축 효율이 높음.
“응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행.”
사용자에게 응용 환경을 제공, 애플리케이션 프로세스를 정의.
이메일, 파일 전송, 웹사이트 조회 등 애플리케이션에 대한 서비스를 제공.
서버 측 애플리케이션 : 웹 서버 프로그램, 메일 서버 프로그램 등. (서비스를 제공하는 쪽)
클라이언트 측 애플리케이션 : 웹 브라우저, 메일 프로그램 등. (서비스를 요청하는 쪽)
주요 프로토콜 : SMTP, POP, FTP, HTTP, DNS
“전자 메일 전송 프로토콜”
인터넷 상에서 메일을 송신하는 데에 사용되는 프로토콜.
SMTP는 메일 서버로부터 다른 곳으로 이메일을 보내는 프로토콜.반면, 자신의 이메일 서버로부터 수신자의 메일을 다운로드 받아 수신하는 프로토콜은POP, IMAP.
“수신된 메일을 PC나 폰에 다운로드 받기 위한 프로토콜”
SMTP는 전자 메일을 직접 송수신하려고 개발 된 프로토콜.
오늘 날의 메일 환경은 특정 서버에 메일 주소를 개설하고, 서버에 수신된 메일을 PC나 폰에 다운로드하는 형식. SMPT와는 별도로 서버와 PC/폰을 연동하기 위한 프로토콜.
메일 서버에서 제공하는 메일 보관 기능인 메일 박스에 저장되어있는 메일을POP를 이용하여 가져와 수신자에게 전송.
110번 포트 사용.
“파일 전송 프로토콜”
FTP 서비스를 제공하는 서버와 클라이언트 간에 파일을 송수신하기 위한 프로토콜.
인터넷을 통한 파일 송수신만을 고려한 프로토콜이므로 동작 방식이 직관적이고 단순.
일반적으로 통신 포트는 제어 용도로는 21번을,데이터 전송 용도로는 20번을 사용.
FTP는 데이터 전송 시에 두 가지 모드를 지원.(능동 모드, 수동 모드)
능동 모드 (Active Mode)
1. 클라이언트가 FTP 서버의 21번 포트로 접속 시도. 사용할 두 번째 포트를 서버에 알림.
2. 서버는 ACK로 응답.
3. 서버의 20번 포트는 클라이언트가 알려준 두 번째 포트로 접속을 시도.
4. 클라이언트는 ACK로 응답.
-> 문제점 : TCP/IP의 일반적인 특징과 달리 서버가 클라이언트에 접속을 시도. 클라이언트의 내부/외부 환경에 따라 접속 불가 or 오류 발생 가능성.
수동 모드 (Passive Mode)
1. 클라이언트가 FTP 서버의 21번 포트로 접속 시도.
2. 서버가 사용할 두 번째 포트를 알려줌.
3. 클라이언트가 다른 포트를 열어 서버가 알려준 포트로 접속 시도.
4. 서버는 ACK로 응답.
-> 서버는 두 번째 data 포트로 20번 포트를 사용하지 않고, 1024~65535 사이의 포트를 사용.
“웹 상에서 웹 서버와 웹 브라우저 상호 간의 데이터 전송을 위한 프로토콜”
클라이언트는 웹사이트를 보기 위해 서버의 80번 포트를 이용해 HTTP 통신을 함.
클라이언트에서는 HTTP request를 보내고, 서버에서는 HTTP response를 반환.
클라이언트가 데이터를 요청할때 ‘GET’이라는 요청 정보를 서버에 전송,서버는 응답으로 요청을 정상적으로 처리했다는 ‘OK’를 반환하고 html을 보여줌.
“문자 형식인 URL 주소 표현을 IP 주소로 변환하는 서비스”
웹 서버에 접속하기 위해서는 서버의 IP 주소가 필요.그러나 IP 주소는 사용자가 이해하거나 기억하기 어렵기 때문에 보통 문자열로 이루어진 URL을이용하여 웹 서버에 접속.
DNS는 이러한 URL 주소를 IP 주소로 변환해주는 서비스.
웹에서 URL을 입력하면 IP 주소를 알아내기 위해 사용자에게서 가까운 곳에 위치한 DNS 서버에 해당 URL의 IP 주소를 문의하게 됨.
-> DNS 서버 : IP 주소와 도메인 이름을 저장하고 있는 서버.
www.naver.com이라는 URL로 이동하고자 입력한다면
1. 로컬 DNS 서버에 해당 URL로 질의. 확인 후, 알고있으면 바로 IP 주소를 알려줌.
2. 모른다면 루트 DNS 서버에게 문의. 루트 DNS 서버는 최상위 도메인이 .com이라는 것을 확인. com을 관리하는 DNS 서버의 IP 주소를 반환.
3. 로컬 DNS 서버는 com DNS 서버에게 URL을 문의. Com DNS 서버는 다음 도메인에 해당되는 naver.com을 관리하는 DNS 서버의 IP 주소를 반환.
4. 로컬 DNS 서버는 naver.com DNS 서버에게 URL을 문의. naver.com을 관리하는 DNS 서버는 www.naver.com에 대한 IP 주소를 갖고 있으므로 로컬 DNS 서버에게 해당 IP를 반환.