국제 표준화기구는 다양한 네트워크 간의 호환을 위해 OSI 7계층이라는 표준 네트워크 모델을 만듬.
1계층 물리 계층 : 실제 장치를 연결하기 위한 전기적, 물리적 세부사항을 정의한 계층
2계층 데이터 링크 계층 : 두 지점 간의 신뢰성 있는 전송을 보장하기 위한 계층
3계층 네트워크 계층(network layer) : 여러 개의 노드를 거칠 때마다 경로를 찾아주는 계층
4계층 전송 계층 : 양 끝단의 사용자가 신뢰성 있는 데이터를 주고받게 하여 상위 계층이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않게 해주는 계층
5계층 세션 계층 : 양 끝단의 응용 프로세스가 통신을 관리하는 방법을 제공하는 계층
6계층 표현 계층 : 코드 간 번역을 담당하는 계층
7계층 응용 프로그램 계층 : 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행하는 계층
- 시스템 간의 연결을 의미하는 것으로 전자 파장을 전달하는 공간 또는 물질 자체가 물리 계층임
- 물리 계층에 쓰이는 케이블을 데이터의 속도에 따라 분류. 이 때 CAT 1부터 CAT 7은 케이블의 굵기와 구리선의 가닥수로 구분
- 케이블 내 구리선의 보호 방법이나 꼬이 방법에 따라서 케이블을 분류하기도 함.
- 두 포인트(Point to Point)간 신뢰성 있는 전송을 보호하기 위한 계층
- 상호 통신을 위해 할당받는 MAC 주소는 ipconfig /all명령으로 확인할 수 있음
MAC 주소는 총 12개의 16진수 숫자로 구성
- 앞쪽 6개의 16진수는 네트워크 카드를 만든 회사를 나타내는 것으로 OUI라고 함.
- 뒤쪽 6개의 16진수는 각 회사에서 임의로 붙이는 일종의 시리얼을 나타내는 것으로 Host Identifier라고 함.
- 데이터 링크 계층의 대표적인 네트워크 장비는 스위치, MAC, 계층에서 동작하는 대표적인 프로토콜은 이더넷(Ethernet)
- 1계층과 2계층에서의 이더넷 동작
- 여러 개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층.
- 다양한 길이의 데이터를 네트워크를 통해 전달하며 그 과정에서 라우팅, 흐름 제어, 세그멘테이션, 오류 제어 등을 수행
- 네티워크 계층에서 여러 개의 노드를 거쳐 경로를 찾기 위한 주소는 IP로 대표됨.
- IP 주소는 8비트의 수 4개로 구성(32 자리의 2진수로 8자리마다 점을 찍어 구분)
- IP 주소는 A, B, C, D, E 클래스로 구분
- A 클래스 첫 번째 자리가 네트워크 주소, 나머지 세 자리는 호스트주소
- B 클래스 두 번째 자리가 네트워크 주소, 나머지 세 자리는 호스트주소
- C 클래스 tp 번째 자리가 네트워크 주소, 나머지 세 자리는 호스트주소
- 양 끝단(End to end)의 사용자들의 신뢰성 있는 데이터를 주고받을 수 있도록 하여 상위 계층이 데이터 전달의 유효성이나 효율성을 신경 쓰지 않도록 해줌.
- 가장 잘 알려진 전송 프로토콜은 TCP(Transmission Control Protocol)
- MAC 주소가 네트워크 카드의 고유 식별자이고 IP가 시스템 주소라면 포트는 시스템에 도착한 후 패킷이 찾아갈 응용 프로그램과 통하는 통로 번호를 볼 수 있음.
주요 포트와 서비스
3계층과 4계층 정보는 netstat -an 명령어로 쉽게 확인할 수 있음
netstat -an 명령을 실행한 결과 담고 있는 정보
3-웨어 핸드셰이킹(3-way handshaking)
1 단계: 두 시스템이 통신을 하기 전에 클라이언트는 포트가 닫힌 Closed 상태, 서버는 해당 포트로 항상 서비스를 제공할 수 있는 Listen 상태.
2 단계: 클라이언트가 처음 통신을 하려면 임의의 포트 번호가 클라이언트 프로그램에 할당되고, 클라이언트는 서버에 연결하고 싶다는 의사 표시로 SYN Sent 상태가 됨.
3 단계: 클라이언트의 연결 요청을 받은 서버는 SYN Received 상태가 되고, 클라이언트에 연결을 해도 좋다는 의미로 SYN + ACK 패킷을 보냄.
4 단계: 클라이언트는 연결 요청에 대한 서버의 응답을 확인했다는 표시로 ACK 패킷을 서버로 보냄.TCP 연결 해제 과정
1 단계: 통신 중에는 클라이언트와 서버 모두 Established 상태.
2 단계: 통신을 끊으려는 클라이언트가 서버에 FIN 패킷을 보내고 클라이언트는 Close Wait 상태가 됨.
3 단계: 서버는 클라이언트의 연결 종료 요청을 확인하고 응답으로 클라이언트에 ACK 패킷을 보내면 서버도 클라이언트의 연결을 종료하겠다는 의미로 FIN 패킷을 보내고 Close Wait 상태가 됨.
4 단계: 클라이언트는 연결 종료를 요청한 것에 대한 서버의 응답을 확인했다는 표시로 ACK 패킷을 서버에 보냄.TCP와 UDP
- TCP: 연결 지향형 프로토콜로 수신측이 데이터를 흘려버리지 않게 데이터 흐름 제어(Flow Control)와 전송 중 에러가 발생할 경우 자동으로 재전송하는 에러 제어(Error Control) 등의 기능을 통해 데이터의 확실한 전송을 보장함. 하지만 완전하지는 않아 해커들에게 많은 공격을 받게 됨.
- UDP(User Datagram Protocol): TCP와 달리 데이터의 신뢰성 있는 전송을 보장하지는 않음. 그러나 신뢰성이 매우 높은 회선을 사용하거나 데이터의 확실한 전송을 요구하지 않는 통신을 하거나 한 번에 많은 상대에게 메시지를 전송하고자 하는 경우에는 전송 경로 확립을 위한 번잡함을 생략하고 시간을 절약할 수 있어 UDP가 더 효과적임.