OSI 7계층

김대익·2022년 4월 21일
0

OSI 7계층과 인터넷 프로토콜 스위트


외우기 : 피다넷 세파 니타
phy(sical) da(ta) ne(twork) t(ransport) se(ssion) p(resentation) a(pplication)
n(etwork interface) i(nternet) t(ransport) a(pplication)

physical layer

통신에 있어 물리적인 모든 것을 담당하는 계층
전기신호와 비트간 서로 변환하므로 Protocal Data Unit은 bits이다.

physical layer는 datalink layer와 세트로 표준화되어있다.
이더넷(유선 LAN환경의 대부분)의 표준화인 IEEE 802.3
무선 LAN환경의 표준화인 IEEE 802.11

보통 표준화 대신 규격의 개요를 나타낸 별명을 사용한다

트위스트 페어 케이블은 8개의 구리선을 두개씩 꼬아 한줄로 만든 케이블로
전자파 노이즈를 막기위해 케이블을 알루미늄 호일로 싸는지 여부에 따라 UTP/STP로 나뉜다
(Unshielded / Shielded Twisted Pair)

트위스트 케이블은 또한 전송속도에 따라 카테고리를 나눈다,
뒤의 숫자가 클수록 전송속도가 빠르고
3,4의 경우 4개의 구리선을 사용하기 때문에 8개의 구리선을 쓰는 5이상과 링크업이 불가능하다

아래 사진과 같이 컴퓨터에 달려있는 NIC(Network Interface Card), 라우터의 포트는 MDI이고
스위치에서 쓰는 포트는 MDI-X이다.
서로 송수신 핀이 반대로 되어있다

4개의 핀을 쓰는 100BASE-TX의 경우

서로 연결하는 포트가 MDI인지 MDI-X인지에 따라 케이블의 종류도 바뀌어야하는데
케이블은 스트레이트와 크로스 케이블로 나뉜다.


그러나 최근에는 대부분 장비에 Auto MDI/MDI-X 기능을 탑재하여 기종에 맞게 송수신기를 바꾸기에 신경쓸 필요가 없어졌다.

기가비트 이더넷 환경에서 가장 많이 사용하는 1000BASE-T(IEEE802.3ab)의 경우
송수신기 앞에 하이브리드 회로가 있어 8개의 핀이 모두 송수신을 같이하여 1Gbps속도가 나온다.


트위스트 페어 케이블 사용시 주의해야 하는 설정은 속도, 듀플렉스이다.
속도는 전송속도로 1Gbps같은 것을 말한다
듀플렉스는 통신 방법을 뜻하며 설정이 다르면 대부분 통신할 수 없는 상태가 된다

이 둘을 자동으로 설정할 때는 서로 Fast Link Pulse를 교환하여 자동으로 설정한다


광케이블은 가격이 비싸고 정밀한 구조 때문에 취급이 어렵지만
100m밖에 연장이 불가능한 트위스트 페어 케이블과 다르게 전송거리가 매우 길고 신호가 거의 감쇄되지 않으며
광대역을 유지할 수 있다.

광케이블은 송신용 수신용 2개의 케이블을 사용하여 전이중 통신을 한다.

광케이블은 굴절률이 높은 코어를 굴절률이 작은 클래드로 덮어 만드는데
코어 내부에 빛을 쏘면 빛이 굴절되면서 먼곳까지 가게된다.

또 코어 내부의 직경에 따라 멀티/싱글 모드로 바뀌는데
직경이 커 광선이 분산되어 전송 손실이 크고, 전송거리도 짧은(550m) 멀티 모드 광파이버는 만드는 난이도가 상대적으로 낮기 때문에 가격이 싸다

또 멀티 모드에는 step index와 graded index로 나뉘는데
아래 그림과 같이 graded index는 굴절을 둥그렇게 만들어 모든 분산된 빛이 동시에 들어온다.

싱글 모드 광파이버는 멀티모드와 반대되는 장단점을 가진다

물리계층은 bits신호를 전기신호로 바꾸어 케이블로 보내는데
누구에게 보내는지, bits가 중간에 없어지거나 바뀌었는지는 전혀 관리하지 않는다.

데이터링크 계층은 인접한 기기(노드)와 논리적인 전송로를 만들고, 오류를 발견/정정한다
동작하는 방식은 아래 그림과 같으며 Protocal Data Unit은 frame이다
네트워크 계층에서 받은 패킷을 frame화를 하는 이유는
논리적 전송로를 어느 노드에 만들지, 비트 손실 여부를 확인하기 위해서이다.

이더넷 프레임화의 규격은 EthernetⅡ 규격(DIX)IEEE802.3규격이 있다.

Destination/Source Address에 사용되는 MAC address는 48bits로 구성되어 있고
00-60-97-8F-4F-86
00:60:97:8F:4F:86
처럼 16진수로 2개씩 나눠서 표현한다
앞의 24bits는 회사가 부여받은 번호, 뒤 24bits는 장비의 시리얼넘버이다

MAC address에 따라 통신로 개수가 다른데 unicast, broadcast, multicast의 프레임 타입으로 나뉜다
목적지에 상대방의 MAC address를 적으면 그 주소의 노드가 수신하게 된다 unicast
목적지에 FF-FF-FF-FF-FF-FF를 넣으면 모든 노드가 강제로 수신하게 된다 broadcast, ARP에서 주로 사용한다
목적지 MAC address의 8번째 비트(individual/group)가 1로 된 주소로,
애플리케이션을 기동한 노드만 수신이 가능해 트래픽 효율이 좋다
멀티캐스트 IPv4 주소의 경우 앞 25bits가 0000 0001 000 000 1001 1110 0 == 01-00-5E(뒤에 1bit가 0)이고 하위


L2 스위치의 동작을 보면 데이터링크의 동작을 알 수 있다.
L2 스위치의 메모리에는 MAC address table을 보고 frame switching을 한다.

switching 하는 과정을 보면





위의 flooding에서 사용된 브로드캐스트가 뿌려지는 범위를 broadcast domain이라고 부른다
스위치 내부에는 뿌려지는 범위를 설정하는 기능을 포함하고있는데 이를 VLAN(Virtual LAN)이라 부른다.

VLAN의 설정 방법은 port VLAN과 tag VLAN이 있다.

port VLAN에는 정적으로 설정하는 static VLAN, 동적으로 설정하는 dynamic VLAN이 있다.
static VLAN은 포트에 VLAN ID를 할당방식이다. 서로 다른 VLAN간 통신을 위해선 L3 스위치로 중계해야한다.

tag VLAN은 frame에 VLAN정보를 넣는 방법으로
이더넷 프레임 외를 전송하는 ISL(Inter Switch Link)과 IEEE802.1Q로 나뉜다



tag VLAN사용시 주의점으로는 태그를 따로 부여하지않는 기본 VLAN인 native VLAN이 있다
여러 스위치를 연결할 때 이 native VLAN을 동일하게 설정해줘야한다.


ARP(Address Resolution Protocol)

ARP는 IP와 MAC address를 서로 연관 지어준다

동작하는 방식을 보면, 노드가 network layer에서 IP 패킷을 받아
IP 패킷의 목적지 IP주소를 보고는
같은 네트워크의 노드일 때, ARP에게 목적지 IP주소의 MAC주소를 물어본다
이때 동작하는 방식은 frame switching에서 flooding과 완전히 같다
다른 네트워크의 노드라면, ARP에게 default gateway의 MAC주소를 물어본다

이렇게 매번 브로드캐스트를 보낸다면 비효율적이기에 Reply를 받으면 ARP테이블에 추가하여 브로드캐스트를 줄인다
이런 캐시 기능의 단점은 중간에 IP주소나 MAC주소가 변경되면 테이블에서 삭제될때까지 통신이 불가능하다는 점(실시간성 결여)이다.
이를 해결하는 것이 GARP(Gratuitous ARP)이다.
GARP는 충돌 IP주소 감지, 인접 기기의 테이블 갱신을 한다.

network layer

데이터링크 계층은 동일 네트워크에 있는 노드와 접속성을 확보하였다면
네트워크 계층은 다른 네트워크에 있는 노드와 접속성을 보장하기 위한 계층이다
Protocal Data Unit은 packet으로,
transport layer에서 segment를 받아 IP헤더를 붙여서(packet) datalink layer에 전달한다


IP주소는 32bits로 되어있다
보통 2진수 8비트씩 끊어서(octet) 10진수로 변환해서 읽는다

IP주소는 서브넷마스크(subnet mask)와 함께 동작한다

서브넷마스크를 이용하는 것은 classless addressing으로 subnetting이나 CIDR(Classless Inter-Domain Routing)이라고도 불린다.

다른 addressing 방법으로는 서브넷마스크를 쓰는것이아닌
첫번째 옥텟의 1~4비트를 클래스로 정해 사용하고 클래스마다 네트워크 ID의 길이를 다르게 사용하는 방법을 classful addressing이라고 부른다. IP주소의 낭비가 많아 거의 사용하지않는다

프로그래밍에 예약어가 있듯 예약된 IP주소들이 있는데
네트워크 설계나 트러블 슈팅시에 network address, broadcast address, loopback addres
network address는 호스트부 bits가 모두 0인 IP주소로, 네트워크 그 자체를 나타낸다
broadcast address는 호스트부 bits가 모두 1인 IP주소로

  • 내가 속한 네트워크의 브로드캐스트 주소를 local broadcast address
  • 내가 속하지 않은 네트워크의 브로드캐스트 주소를 direct broadcast address
  • 255.255.255.255는 limited broadcast address로 동일 네트워크 모든 노드에 전송하는 역할을 한다

loopback address는 자시 자신을 나타내는 IP주소로
제 1옥텟이 127인 IP주소면 어느 것이든 상관없지만,
보통 127.0.0.1/32를 쓰는게 일반적이다


네트워크 계층에서 쓰는 기기는 router와 L3 switch다
이 둘은 IP주소를 기반으로 패킷 전송지를 전환한다(routing)

라우팅시 MAC주소는 동일 네트워크 안에서만 유효한 주소이므로
라우터를 거칠 때마다 네트워크가 바뀌므로 ARP를 이용하여 계속 목적 MAC주소를 바꾼다

이런 라우팅을 위해서는 라우팅 테이블이 필요한데, 라우팅 테이블을 만드는데는 정적라우팅, 동적라우팅 방식이 있다.

정적 라우팅은 수동으로 라우팅 테이블을 만드는 방법으로 일일이 목적지 네트워크와 next hop을 설정한다
관리가 편해 소규모 네트워크 라우팅에 적합하다

동적 라우팅은 인접 라우터끼리 자신이 가진 테이블을 교환해 라우팅 테이블을 만드는 방법이다.

라우팅 제어범위에 따라 두가지 프로토콜로 나뉘는데
IGP(Interior Gateway Protocol), EGP(Exterior Gateway Protocol)로 나뉜다.
IGP는 AS(Autonomous System) 내부를 제어하는 라우팅 프로토콜로

  • RIPv2(Routing Information Protocol version2)
  • OSPF(Open Shortest Path Fat)
  • EIGRP(Enhanced Inerior Gateway Routing Protocol)
    를 사용하고

EGP는 AS와 AS사이를 제어하는 라우팅 프로토콜로

  • BGP(Border Gateway Protocol)
    를 사용한다

RIPv2는 distance vector형의 라우팅 프로토콜이다. 이는 목적지까지 경유하는 라우터수(hop수)를 최적 경로 판단 기준으로 한다.
라우팅 테이블을 정기적으로 교환해 라우팅 테이블을 만드는 방식으로, 이해하기 쉽지만
라우팅 테이블이 커지면 불필요한 대역을 소비해 수렴에 시간이 소요되기도 해 대규모에 적합하지않다
또한 오직 hop수만 고려하기에 hop수가 더 많더라도 대역이 큰 경로를 찾지 못하는 경우가 생길 수 있다.

OSPF는 link state형 라우팅 프로토콜이다. 이는 각 라우터가 자신의 링크상태나 대역, IP주소등 다양한 정보를 교환해 LSDB(link state DB)를 만들고 이를 바탕으로 라우팅 테이블을 만든다.
이 LSDB가 너무 커지면 곤란하기 때문에 라우터를 기준으로 일정 구역의 area가 정해져 있어
이 area내의 라우터끼리만 LSDB를 공유한다
RIPv2는 정기적으로 라우팅 테이블을 보내지만, OSPF는 업데이트가 있을 때만 테이블을 갱신한다
RIPv2는 hop수를 고려했지만 OSPF는 100/대역폭Mbps의 공식을 사용해 고려한다.
대역폭이 클수록 비용이 낮아지므로 대역폭이 클수록 최적 경로가 되기쉽다.
또한 같은 비용의 루트가 있을 경우 그 루트들을 모두 사용하여 부하를 분산시킨다(equal cost multi path)

EIGRP는 distance vector형의 라우팅 프로토콜이다. RIPv2, OSPF의 장점을 취한 프로토콜로
자신이 가진 경로 정보를 교환해 topology table을 만들어 최적 경로 정보만 추출해 라우팅 테이블을 생성한다
이는 OSPF처럼 업데이트가 있을 때만 테이블을 갱신한다
고려하는 것(매트릭)은 대역폭과 지연인데
대역폭은 10000/최소대역폭Mbps 공식을 사용하고, 지연은 마이크로초/10 공식을 사용해 산출한다
이를 이용해 (대역폭 + 지연) * 256이 클수록 최적 경로이고,
같은 비용의 루트가 있을 경우 그 루트들을 모두 사용하여 부하를 분산시킨다(equal cost multi path)

BGP는 distance vector형의 라우팅 프로토콜이다. 경로와 방향에 따라 경로를 계산하는데
경로는 목적지까지 경유하는 AS, 방향은 BGP peer를 나타낸다(경로 정보를 교환하는 상대)
먼저 peer를 지정해 1대1 TCP 접속을 만들고,
그 안에서 BGP peer와 경로 정보를 교환해 BGP table을 만들고
최적 경로 알고리즘에 따라 최적의 경로를 선택한다
(https://cezacx2.tistory.com/94)
이 최적 경로를 라우팅 테이블에 추가하고 BGP peer에게 전달한다.
이후 KEEPALIVE메세지로 peer가 잘 동작하는지 확인하고
업데이트가 있을때만 UPDATE메세지를 이용해 테이블을 갱신한다.

여기까지 라우팅 테이블이 만들어지는 과정을 설명했다면
완성된 라우팅테이블을 어떤 우선순위로 사용되는지에 대해 살펴보면
longest match, 경로 집약, AD값이 중요하다

longest match는 조건에 맞는 경로들이 있을 때 서브넷마스크가 가장 긴 경로를 쓴다는 규칙이다
경로 집약은 공통된 비트까지만 서브넷마스크를 이동하는 방법이다

AD값은 라우팅 프로토콜마다 우선순위를 정해서 우선순위가 높은 경로를 우선 사용하도록하는 것이다
(숫자가 작을수록 우선도가 높다)


NAT(Network Address Translation)

넓은 의미에서 NAT은 IP주소를 변환하는 기술 모두를 나타낸다.
이 중에서 정적 NAT, NAPT, Twice NAT을 보면

정적 NAT는 내부 외부 IP주소를 1대1로 연관시켜 변환시킨다
내부에서 외부로 연결시 발신지 IP주소를 바꾸는 것

NAPT(Network Address Port Translation)는 내부 외부 IP주소를 N대1로 변환한다
정적 NAT과 다르게 발신지 IP주소 + 포트번호도 바꾼다, 따라서 한 IP주소를 여러명이 사용가능하다
어떤 클라가 어떤 포트번호를 쓰는지를 보고 패킷을 분배한다

Twice NAT은 발신지, 목적지 IP주소를 모두 변환한다
이는 서로 다른 시스템들 간 IP들이 중복되는 경우 통신할 때 사용한다

이러한 NAT을 지탱하는 기술은 NAT table과 proxy ARP이다
NAT table은 변환 전/후의 IP주소, 포트번호를 저장한다
proxy ARP는 라우터가 클라이언트에게 온 ARP요청에 대신 응답하는 것이다


프로토콜

DHCP는 IP주소, 기본 게이트웨이 등 설정을 노드에 배포하기 위한 프로토콜
(application layer 프로토콜이지만 IP관련이므로 언급)

DHCP의 동작 과정을 보면

DHCP Discover은 브로드캐스트이므로 동일한 VLAN에 있어야한다.
여러 VLAN이 있는 인터넷환경에서 VLAN하나하나 DHCP 서버를 두는 것은 어렵다.
이럴때 DHCP relay agent를 사용한다.
DHCP relay agent는 Discover을 브로드캐스트에서 유니캐스트로 변환하여
다른 VLAN에 있는 DHCP서버에게 보낼 수 있게 해준다


ICMP(Internet Control Message Protocol)는
IP 레벨에서 장애 발생, 패킷 전달을 할 수 없었을 때, 보냈던 발신자에게 전달
PING(Packet Internet Grouper)은 ICMP 패킷 송신용 네트워크 진단 프로그램이다

ICMP에서 자주나오는 타입, 코드 조합으로는

  • IP 레벨 통신 성공했을 때, Echo Request type 8 / code 0 -> Echo Reply type 0 / code 0를 응답받는다.
  • 응답이 없을 때, Echo Request type 8 / code 0 -> 일정시간 후 단말상 Request Timeout표시
  • 목적지가 없을 때, Echo Request type 8 / code 0 -> 라우터가 목적지 IP주소에 대한 경로를 갖고있지 않다는 표시인 Destination Unreachable type 3 / Host Unreachable code 1을 답장받는다
  • 같은 VLAN내에서 기본 게이트웨이가 아닌 다른 게이트웨이가 있을 때, 그 게이트웨이가 더 적합하다면
    기본 게이트웨이에 패킷을 보내고있던 노드가 그 게이트웨이를 통해 통신할 수 있도록 도와주는
    Redirect type 5 / Redirect Datagram for the Network code 0

transport layer

network layer의 역할은 application에서 전송된 데이터를 해당 노드까지 보내주는 역할만 한다.
transport layer는 application이 어떤 통신 제어를 요청하는지등 네트워크와 어플리케이션의 가교역할을 한다.
Protocal Data Unit은 segment로, 어플리케이션 데이터에 트랜스포트 헤더를 붙여 만든다.
프로토콜로는 TCP, UDP가 있다.
TCP(Transmission Control Protocol)는 신뢰성이 필요할 때
UDP(User Datagram Protocol)는 즉시성을 요구할 때 사용한다.



컨트롤 비트는

  • URG 긴급함
  • ACK 확인응답
  • RST 커넥션 강제중단
  • SYN 커넥션 연결요청
  • FIN 커넥션 종료

를 나타내는 플래그이다


MTU와 MSS의 차이

MTU(Maximum Transmission Unit)와 MSS(Maximum Segment Size)는
둘다 한번에 보내는 데이터의 사이즈를 뜻하지만 서로 계층이 다르다.
MTU는 네트워크 계층에서의 데이터 크기
MSS는 어플리케이션 계층의 데이터크기를 나타낸다

session layer ~ application layer

HTTP

현재 유통 중인 HTTP 버전은 HTTP/1.0 HTTP/1.1로 TCP 커넥션 사용에 큰 차이가 있어 서버부하, 선정기기 사양에 크게 영향을 준다
HTTP/1.0은 요청마다 TCP 커넥션을 생성, 제거를 한다. 따라서 클라이언트가 많을수록 작업 부하가 크다
HTTP/1.1은 다시 접속할 때는 이미 만들어진 TCP 커넥션을 다시 사용한다.

https://gmlwjd9405.github.io/2019/01/28/http-header-types.html


SSL

인터넷에서는 도청, 변조, spoofing의 위협이 있다, 이럴 때 SSL로 보호가 가능하다.


SSL 핸드쉐이크 과정은
1. 지원하고 있는 알고리즘 제시
클라이언트가 사용할 수 있는 암호화 방식, 단방향 해시함수 제시

  1. 통신 상대의 증명
    클라가 제시한 암호화 방식이나 해시함수 중 사용가능한 것들 Server Hello로 전송
    다음으로 서버의 인증서를 보내 통신 상대가 자신임을 증명
    이후 Server Hello Done을 보내 모두 보냈음을 알려줌
    클라는 ROOT인증서로 복호화하고 MD를 비교하여 검증
  2. 공용키 교환
    상대 증명이 되면 premaster secret을 암호화하여 서버에 보냄
    서버는 개인키로 이 premaster secret을 복호화하고
    Client Hello의 client random과 Server Hello의 server random과 premaster secret으로 클라, 서버가 모두 같은 공용키를 생성함
    4.서로 Change Cipher Spec을 교환해 사용하는 암호화 알고리즘 선언

또한 SSL에는 서버/클라이언트 인증이 있다


FTP

파일 전송을 위한 프로토콜, 암호화 지원X
컨트롤 커넥션 : 어플리케이션 제어에 사용되는 커넥션
데이터 커넥션 : 실제 데이터 전송용 커넥션

FTP에는 액티브 모드와 패시브 모드 2가지 전송 모드가 있다
두 모드는 데이터 커넥션 생성 방법이 다르다

패시브모드는
클라이언트에서 접속을 요청하는 보통 프로토콜처럼 데이터 커넥션 SYN을 클라이언트에서 시작하는 모드이다.
액티브 모드는 반대로 SYN가 서버에서 시작하고, 컨트롤 커넥션에 TCP/21, 데이터 커넥션에 TCP/20을 사용한다

클라가 FTP서버에서 파일을 가져오는 것을 가정하고 커넥션을 보면
1. 서버의 TCP/21 접속 요청을 클라가 받고, 3way handshake가 완료된다.

0개의 댓글