TCP와 UDP를 이해하기 위해 네트워크 기본 5계층에 대해 먼저 알아보겠습니다.
우선 네트워크란 무엇인가요?
네트워크(Network)는 컴퓨터들이 통신 기술을 이용하여 그물망처럼 연결된 통신 이용 형태를 뜻함
네트워크의 대략적인 이해
- 처음에 케이블을 이용해 컴퓨터간 통신, 컴퓨터 대수가 늘어나자 허브를 이용하기 시작
- 이때 MAC주소를 활용하여 통신에 활용하였으며 이 네트워크를 Local Area Network(LAN, 랜)이라 부름
- 이때의 통신 방식 중 하나가 Ethernet(컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, MAN 및 WAN에서 가장 많이 활용되는 기술 규격)
- LAN 허브 끼리 연결한 것이 좀 더 거대한 네트워크를 WAN(Wide Area Network) 이라 부름
- 이때의 통신을 위해 IP 주소를 사용, 이때부터 허브가 주소를 가지게 되며 게이트웨이(혹은 라우터)라고 불리게 됨
- 이때 단순히 IP주소로만 데이터를 주고받는다면 효율이 떨어지게 되므로 '어떤 용도의 데이터'라는 구분을 위해 포트를 사용함. 데이터를 받는 컴퓨터가 쉽게 처리할 수 있도록 특정 포트로 보내는 것.
- 각각의 어플리케이션에 각각의 포트를 부여하는 것, TCP와 UDP는 통신 방식이 다르기 때문에 포트도 각각 가지고 있다.
그럼 OSI 7계층, 네트워크 5계층은 무엇인가요?
소프트웨어 아키텍처 중 Layered Architecure를 따르는 대표적인 예가 네트워크 시스템, 네트워크 시스템은 일종의 소프트웨어
계층 모델은 이 소프트웨어의 구조를 설명하는 것
네트워크 7계층, OSI 7계층
- 네트워크 7계층은 OSI 7 Layer 라고도 불리며 국제 표준화 기구(ISO)에서 다양한 네트워크의 호환을 위해 설계한 표준 네트워크 모델
- 프로토콜을 기능별로 나눈 것으로, 각 계층은 하위 계층의 기능을 이용하고, 하위 계층은 상위 계층에게 기능을 제공
- 전송계층(transport)과 응용계층(application) 사이에 session, presentation layer 존재
- 하지만 TCP/IP 5계층 모델을 더 많이 사용함
Session layer(세션계층)
- applications와 transport 레이어 사이에 통신을 원활하게 해주며, 데이터를 presentation layer에 전달해줍니다.
- 물리계층에서 전송계층까지는 데이터를 전달해 주는 개념, 세션계층은 응용프로그램 간의 대화를 유지시켜주기 위한 구조를 설정
- 대화가 성립하도록 제어, 다이얼로그 제어
- 분실데이터 복원을 위한 동기화 지점을 두고 데이터 손실을 복구
- 동기화, 세션 연결/관리/종료 , 네트워크 오류 검사 및 복구, 전송모드(반이중, 직렬, 병렬, 동기, 비동기)를 결정
presentation Layer(표현계층)
- 캡슐화되지 않은 어플리케이션 데이터가 어플리케이션에서 이해될 수 있는지 확인
- 각 어플리케이션들이 정보를 서로 원활히 통신하기 위하여 필터 및 변환하는 과정을 담당
- 하드웨어랑 OS에 다른 차이를 변환을 통해서 없애줌
- 데이터의 압축과 암호화를 처리
네트워크 5계층, TCP/IP 5계층
- TCP/IP는 인터넷 세계에서 표준으로 사용되고 있는 네트워크 프로토콜
- 네트워크 5계층은 네트워크의 기본 구조를 5개의 계층으로 나눠서 표준화한 것
1계층 : Physical Layer(물리계층)
- 물리적인 연결과 전기 신호 변환/제어
- 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 보내고(인코딩) 그 신호를 0과 1로 바꾸어 해석(디코딩), 하드웨어적으로 구현
- 전송 단위는 Bit(0과 1)
- ex) 네트워크 케이블 등
2계층 : Data link layer(데이터링크 계층)
- 같은 네트워크 안에 여러대의 컴퓨터들이 데이터를 주고 받기 위해 필요한 모듈
- 같은 네트워크, 세그먼트의 범위 : 허브에 의해 연결되어 있는 범위(멀티액세스), 컴퓨터와 라우터, 라우터와 라우터 사이(포인트 투 포인트)
- Framing : 원본 데이터 앞뒤로 일종의 식별자를 추가해 데이터를 식별할 수 있도록 하는 작업
- 프리엠블 : 지금부터 프레임이 시작된다는 일종의 신호로 그 이후 데이터를 보냄, 비트를 읽는 타이밍이 맞아야 함
- 네트워크 기기 간 데이터 전송 및 물리 주소를 결정 -> 랜 카드에서 하드웨어적으로 구현
- 데이터 전송 단위는 Frame, 수신지와 송신지의 MAC주소가 포함됨
- 맥 주소는 최종 목적지가 아닌 다음 목적지(라우터의 맥 주소)를 가르키며 전송 과정 중에 다음 장비의 주소로 교체됨(갱신)
- Ethernet(이더넷, 컴퓨터 네트워크 기술의 하나로, 일반적으로 LAN, WAN에서 가장 많이 활용되는 기술 규격), Wi-fi 하나의 네트워크를 연결
- 이더넷 헤더(수신처 MAC주소:송신처 MAC주소:타입) - 페이로드(3계층의 PDU) - 이더넷 트레일러(FCS, 에러 체크용 비트열)
- 허브에서 온 신호 중 수신처 MAC주소와 자신의 MAC주소를 비교해 일치하지 않으면 폐기함
- CSMA/CD라는 액세스 제어(반이중 통신)를 활용해 케이블의 신호를 감지해 누군가 송신 중이라면 송신하지 않고 송신 후 충돌이 일어나면 다시 재수행
- 스위치를 활용해 전이중 통신
3계층 : Network Layer(네트워크 계층)
- 스위치로 구성된 네트워크에서 1대만 송신한 브로드캐스트가 모든 컴퓨터에 도달, 라우터를 넘어서는 브로드캐스트는 전송되지 않음
- 2계층에서처럼 브로드캐스트로 통신을 하면 낭비가 심함, 라우터 사이의 통신에는 새로운 프로토콜이 필요 -> 3계층 라우터 끼리의 통신
- 라우터를 통해서 네트워크들이 서로 소통 -> 운영체제 커널에 소프트웨어적으로 구현
- 라우팅, 흐름 제어, 세그멘테이션(segmentation/desegmentation), 오류 제어, 인터네트워킹(Internetworking) 등을 수행
- 여러 네트워크를 연결(다른 네트워크와 통신하기 위한 경로를 설정하고 논리 주소를 결정)
- IP헤더 : 버전, 헤더 길이, 서비스 타입, 데이터 길이, ID, 플래그(데이터그램을 분할했는지 여부), 플래그먼트 오프셋(분할한 경우 본래대로 되돌릴 때 사용), TTL, 프로토콜, 헤더 체크섬, 송신처 IP주소, 수신처 IP주소, 옵션
- TTL : 라우터를 경유할 때마다 1만큼씩 줄어들고 0이 되면 데이터그램이 파기됨, 64개나 128개로 지정되어 라우팅이 잘못되었을 때 영원히 떠도는 케이스르를 방지함
- 데이터 전송 단위는 Datagram(Packet) : data에 IP주소 정보를 붙인 것, 2계층으로 전달됨
- ex) IP, 클라이언트 PC(192.168.219.120)에서 웹 서버 컴퓨터로(127.12.24.12) 요청을 보냄
- 송신처 IP주소: DHCP를 통해 할당받음, 송신처 MAC주소: 알고 있음, 수신처 IP주소: DNS로 질의, 수신처 MAC 주소: IP주소로 ARP요청으로 알아냄
- ICMP(internet control message protocol) : 에러 보고 프로토콜, 네트워크 제어 관리 등을 수행, 라우터에 목적지에 대한 정보가 없으면 라우터는 송신 불능 메시지를 ICMP로 통지함
- IP헤더 + ICMP 메시지 형태, 상태조사를 위한 쿼리와 에러 통지를 위한 에러 메시지로 구성
- Echo : 에코 응답과 에코 요청(ICMP 타입 0과 8), ping(임의의 수신처에 에코 요청을 보내는 소프트웨어, 송신처와 수신처 사이 데이터 송수신이 가능한지 확인, 네트워크 상태 조사)
- TIme Exceeded : 타입 11, TTL은 패킷을 파기하는데 이때 파기를 통지하는 메시지, traceroute(타입11을 사용한 네트워크 체크용 소프트웨어, 수신처까지의 경로를 알려주는 소프트웨어), TTL을 1부터 늘려가면 각 라우터에서 보내는 Time exceeded 메시지를 통해 라우터 경로를 알 수 있음
4계층 : Transport Layer(전송 계층)
- 3계층까지는 수신처가 없거나 데이터의 손실, 에러 등을 신경쓰지 않음, 4계층에서부터 처리
- 응용 계층에서 전달받은 데이터를 목적지 응용계층의 프로그램까지 전달하는 역할, 재전송도 담당
- 데이터를 받고자 하는 프로세스들은 포트번호(하나의 컴퓨터에서 동시에 실행중인 프로세스들이 겹치지 않게 가져야할 정수값)가 필요함
- 데이터를 분류해 어떤 프로세스에 데이터를 도달하게 할지 결정하는 모듈, 각 노드에서 동작중인 어플리케이션에 데이터를 할당
- 운영체제 커널에 소프트웨어적으로 구현(TCP/IP 프로토콜에 따라 동작하도록 만들어진 OS 내장 통신 프로그램)
- 네트워크 계층에서 보내온 데이터에 대해 정렬, 오류 정정 등을 수행
- ex) 웹브라우저의 49142 포트에서 웹 서버의 80번 포트로 요청을 보냄
- ex) TCP/UDP
- 방화벽 : 특정 기준의 트래픽을 차단, 대부분은 transport layer에서 작동, 특정 포트로의 접근을 모두 차단한다.
- 데이터 전송 단위는 Segment
5계층 : Application Layer(응용 계층)
- 사용자에게 서비스를 제공하고 사용자가 제공한 명령을 하위계층에 전달.
- 웹을 들어가거나 이메일을 보내는 등 어플레케이션 특징적인 작동
- 이메일, 웹 브라우저, 파일 전송 등 통신하기 위해 필요한 서비스를 제공
- ex) HTTP, SMTP etc..
개념 정리
프로토콜
- 컴퓨터끼리 통신을 할 때 어떤 절차에 따라 뭘 보낼 것인가와 같은 규칙을 말함
- TCP/IP 프로토콜은 하나의 프로토콜이 아니라 인터넷에서 사용되는 각종 표준 프로토콜(HTTP, TCP, UDP, ARP, 이더넷 등)을 일컫는 말
- 서로 다른 OS나 통신사를 사용해도 공통의 TCP/IP 프로토콜을 사용해서 두 컴퓨터가 통신을 할 수 있음
라우터와 게이트웨이, 스위치 차이
- 같은 네트워크 내부에서 데이터 전송을 수행하는 기기
- 네트워크 사이에 데이터 전송을 수행하는 기기
- 라우터는 주로 LAN과 WAN을 연결(layer3)하는데 사용, 게이트웨이는 프로토콜이 다른 네트워크를 연결(layer4)할 때 주로 사용
- 라우터는 장비, 게이트웨이는 개념적인 용어
PDU (Protocol Data Unit)이란?
- 데이터를 보내기 위해서는 전송하려는 데이터(SDU, Service Data Unit) 이외에도 제어데이터(PCI, Protocol Control Information) 필요
- 이 두개를 합한 것이 프로토콜 데이터 유닛이며, PCI에는 송수신자 주소 및 오류 검출 코드, 프로토콜 제어 정보 등이 포함됨
- 데이터를 보낼 때는 OSI 모델 각 계층을 지날 때마다 필요한 제어 데이터를 추가함(반대로 데이터를 받을 때는 제어 데이터를 벗겨냄)
- 이런식으로 데이터를 덧붙여 PDU를 완성하는 것을 캡슐화라 부름, 제어데이터가 앞에 붙으면 헤더(header), 뒤에 붙으면 트레일러(trailer)
- 물리 계층: Bit, 데이터링크 계층: Frame, 네트워크 계층: Packets, 전송 계층: Segment, 세션, 표현, 어플리케이션 계층: Message(Data)
IP주소
- 위치정보를 갖는 어드레싱(논리적 주소)과 경로를 찾는 라우팅의 기능을 갖춘 프로토콜
- 논리주소는 유니캐스트, 멀티캐스트, 브로드캐스트 3가지 주소로 구성, IP주소는 네트워크 주소와 컴퓨터 번호의 조합
- 호스트 버호의 비트가 모두 0인 경우 네트워크 주소, 모두 1인 경우 브로드캐스트 주소
- IP주소 A클래스, B, C, D(네트워크 부분이 32비트, 멀티캐스트로 사용되는 특수한 주소)
- 클래스 A의 주소로는 한 네트워크당 1677만대 호스트의 어드레스 할당 가능. 하지만 실제로 저렇게 쓰지는 않아 효율적으로 사용하기 위해 서브넷 마스크 활용
- 서브넷, 서브넷팅 : 네트워크를 작은 네트워크로 나누는 것
- 서브넷 마스크: 네트워크 번호, 서브넷 번호의 비트수를 나타내기 위해 활용하는 비트열로 호스트번호를 0, 나머지는 모두 1로 표기
- 클래스 C보다는 A와 B에서 주로 서브넷 활용
- 슈퍼넷 : 클래스를 통합해서 1개의 네트워크로 운용하는 것(클래스리스 어드레싱) <-> 클래스풀 어드레싱
DHCP
- 송신처(자신의) IP주소의 결정이 필요, 동적과 정적할당이 있음
- IP 주소가 동적으로 컴퓨터에 설정되는 방식
- 네트워크에 속한 호스트의 IP주소가 중복되지 않아야 함, 각 호스트들에 대해 IP주소를 할당하고 관리하는 자동 작업
- 신규 호스트는 네트워크의 모든 호스트에게 브로드캐스트 방식으로 DHCP 발견 메시지를 보내고 DHCP 서버가 사용 가능한 IP주소를 알려주는 방식으로 자동 할당(DHCP서버도 브로드캐스트 방식으로 알려줌)
허브와 스위치
- 명확한 개념은 아니나 허브는 신호의 증폭과 재생을 수행하고 다수의 컴퓨터를 연결하는 개념
- 그 외 제어는 하지 않음, 허브를 통해 신호가 도달하는 범위를 넓힐 수 있음(하나의 케이블 취급)
- 스위치는 제어의 개념이 추가
- MAC주소 필터링 : 스위치에서 송신처와 수신처 MAC주소를 기억한 후 해당 프레임을 적절한 포트에만 보냄(포트에 연결되어 있는 컴퓨터의 맥주소를 기억)
- 학습 전의 MAC주소 수신의 프레임을 수신한 경우랑 멀티캐스트와 브로드캐스트의 경우에만 플러딩이 발생(스위치 사용 전보다 오류 줄임)
- 버퍼링 : 같은 포트로의 프레임이 동시에 도착할 때 등 충돌 가능성이 있는 프레임을 임시로 저장해 두는 것
- 버퍼 용량의 제한이 있기 때무네 백프레셔, IEEE802.3x 등을 활용해 더이상의 송신을 중단시킴
- 반이중(Half duplex) : 누군가 송신 중이면 송신 불가능, 내가 송신 중이면 수신 불가능 등, CSMA/CD
- 전이중(FULL duplex) : 동시에 송신과 수신을 할 수 있음, 스위치 활용
'CS' 카테고리의 다른 글
[네트워크] TCP와 UDP 차이, TCP는 어떻게 순서를 보장하는가? (0) | 2021.03.20 |
---|---|
[네트워크]GET과 POST의 차이 (0) | 2021.03.20 |
[네트워크]HTTP와 HTTPS 차이 (0) | 2021.03.18 |
[CS] 프레임워크와 라이브러리, API 차이 (0) | 2021.03.16 |
[CS]MVC패턴이란? (0) | 2021.03.16 |