통신 방법
유니캐스트
1:1 통신 목적지와 출발지가 정해져있는 통신방식
통신범위: 전체 네트워크 ex) http
브로드캐스트
1: N 방식 목적지가 정해져 있지 않은 통신방식
통신범위 : 서브넷(로컬 네트워크)
2계층에서 통신 mac주소 : FFFF:FFFF:FFFF:FFFF
3계층에서 통신 ip주소 : 255.255.255.255
ex) ARP
멀티캐스트
1: 그룹 지정된 그룹과 통신하는 방식
통신범위: 정의된 구간
D 클래스 단위로 네트워크를 구분하여 통신함
ex) 방송
애니 캐스트
1:1 통신 방식 유니 캐스트와 비슷하나, 통신거리, 응답시간이 짧은 순서로 통신
통신범위: 전체 네트워크
ipv6 사용함
ex) 6 to 4 , dns
Bum 트래픽?
B(broadcast) U(unknown unicast) M(muticast)
3가지 방식 모두 비슷하게 동작함을 의미
유니 캐스트는 1:1 방식이지만, 1:N 방식으로 작동되는걸 unknown unicast 라고 한다.
스위치가 mac 주소를 몰라서 모든곳에 플러딩(전송)하는 방식이다.
각각 패킷을 받는 곳에서 NIC가 사용되고 목적지가 아닌 패킷을 버림으로 불필요한 네트워크 사용량이 증가한다.
MAC 주소
네트워크 인터페이스 카드에 할당되는 물리적인 번호
총 48비트로 이루어지며, 24비트는 제조사 코드, 뒤의 24비트는 제조사에 자체적으로 할당한다.
앞서서 말했듯, NIC는 신호의 목적지가 아니라면 폐기한다.
다만, 자기 자신이거나 브로드캐스트, 멀티 캐스트의 그룹 주소이면 상위 계층으로 올려보낸다.
이때는 NIC 내부에서 로직을 처리하는게 아닌 os나 애플리케이션에서 처리를 해야한다.
무차별 모드?
신호를 수집하기 위해 폐기하지 않고 그냥 계속 모음
ex) 와이어 샤크
IP 주소
클래스풀 기반 IPV4
IPv4 는 하나의 옥텟 8비트를 4개를 가지므로써 2^32을 표현할 수 있다.
이를 mac주소 처럼 구분짓는데, mac 주소와 달리 구분자가 일정하지 않다.
옥텟 단위로 네트워크와 호스트 를 나누는데, 하나의 네트워크한에 호스트 ip를 할당하는 방식이다.
만약 클래스 A 라면, 네트워크 옥텟 1개 3개의 호스트 옥텟을 가진다.
네트워크는 0~128개를 지닐수 있고 하나의 네트워크에 호스트ip를 2^24 - 2개 가질 수 있다.
- 0.0.0.0: 네트워크 자체를 의미하거나 기본 게이트웨이로 사용.
- 127.0.0.0 ~ 127.255.255.255: 루프백 주소로 예약되어 있음.
-2 하는 이유이다.
만약, 클래스 B 라면, 네트워크 옥텟 2개 2개의 호스트 옥텟을 가진다.
네트워크는 2^14 개를 지니고 하나의 네트워크에 호스트 ip 2^16개를 가질 수 있다.
왜 2^14개인가?
클래스를 구분짓기 위해서 첫번째 옥텟이 0010으로 시작하기에, 2비트를 버린다.
클래스 리스 IPv4
인터넷이 보급화 되면서 위와 같은 방법으로 하면 하나의 네트워크에 미사용되는 ip들이 많고 비효율적이다.
클래스리스 방법은 서브넷 마스크를 통해 네트워크와 호스트 부분을 나누는 방식이다.
and 연산을 진행하여 네트워크 부분과 호스트 부분을 나눈다.
네트워크 주소는 103.9.32.0 이고 호스트 주소는 0.0.0.146 이다.
서브넷팅
8비트 단위로 서브넷을 적용하던것을 더욱 잘게 쪼개는 것이다.
예를 들어 호스트ip가 12개 밖에 사용되지 않는데, c 클래스처럼 서브넷(255.255.255.000)을 적용하면 낭비되는 호스트 ip가 많다.
12개의 지사, 12개의 호스트 ip를 지닌다고 가정하면 서브넷 마스크는 255.255.255.240이 될것이다.
CIDR 표기법을 따르면 /28 이 될것이다. (서브넷 마스크의 1로 설정된 비트의 수)
공인 ip, 사설 ip
nat (network address translation) 기술은 공인 ip <-> 사설 ip로 변경하여 많은 ip를 내부적으로 사용할 수 있게 해주는 기술이다. 하지만, c 회사에서 a 회사로 접속하고자하는 경우 a 회사를 c회사의 네트워크와 동일한 네트워크로 판단한다.
그래서 인터넷을 통해서 전송하는게 아닌 로컬에서 브로드 캐스팅하므로 접속이 불가능하다.
그러므로 이걸 고려해서 서브넷팅을 해주어야 한다.
TCP, UDP
2,3계층은 데이터를 얼마나 정확한 목적지에 보낼지가 목적이었다면, 4계층의 프로토콜인 TCP는 얼마나 데이터를 정확히 받을지를 중점적으로 본다. 데이터를 패킷으로 쪼개어 보내는데, 이때, 패킷의 순서가 맞지 않으면 데이터의 정합성이 깨진다.
tcp 방식은 출발 포트와 도착 포트로 출발지와 목적지를 정한다.
tcp는 안전한 연결을 보장하기 위해 3 hand shake라는 방식을 통해서 클라이언트와 서버 간의 연결을 먼저 해준다.
3 hand shake?
syn 가 되었으면 서버는 연결이 확인되면, syn/ack 를 보낸다. 이때, 서버가 보내는 seq 번호는 랜덤하게 생성하여 보내는것이다. 갑자기 10을 줬는데 ack 11 인건 알겠는데, seq 값이 20이라고 당황하면 안됀다. (보내는 순서가 아님)
그러면 서버는 여러 클라이언트의 요청을 받을텐데, 요청이 기존의 연결인지, 새로운 연결인지 어떻게 확인할까?
tcp 헤더의 플래그로 확인한다.
tcp 헤더의 플래그 종류
syn: 연결 시작용도 클라이언트가 1을 칠하고 전송
ack: 서버에서 보낸 ack 번호가 유효하다면 칠하여서 전송, 서버에서는 요청이 유효하면 syn,ack 에 1을 칠하고 전송
fin: 정상적으로 데이터 전송이 끝나면 칠하기
RST : 연결 일방적으로 끊을떄 사용
URG : 긴급한 데이터일 경우
PSH: 서버측에서 전송할 데이터가 없을 경우
윈도사이즈?
한번에 3개의 요청을 보내면? 윈도우 사이즈는 3이다.
만약 패킷의 사이즈가 너무 작으면 서버가 패킷을 처리하는데 속도가 느리거나 거리가 멀면 지연시간이 많이 걸려 데이터가 꼬일 수 있다. 반대로, 너무 크면 네트워크 환경이 좋지 않으면 다량의 데이터가 유실될 수 있다. 이를 예방하기 위해서 윈도우 사이즈를 적당히 조절하는게 슬라이딩 윈도우이다.
만약 네트워크 상태가 안좋아서 패킷이 유실되면?
이전 메모리에 쌓아놨던 패킷의 ack번호로 재요청~
ARP?
2,3 계층에서 mac 주소를 ip 주소로 어떻게 바꿀까?
반대로, ip주소를 mac 주소로 어떻게 바꿀까?
이걸 정의한 규칙인 3계층에 해당하는 ARP(Address Resolution Protocol)이다.
데이터를 캡슐화하는 과정에서, 출발지 ip와 도착지 ip는 알고 있다고 한다. 다만, 도착지의 mac주소를 모르기 때문에, 브로드 캐스팅하여 상대방의 mac주소를 알아낸다.(내부 네트워크 내에서)
윈도우 cmd 에서 arp -a 를 하면, ARP 테이블이 보이고 ARP 테이블은 다음과 같이 생겼다..
NIC의 ip주소와 mac 주소가 매핑 되있고 유형이 동적이라면, 매핑된 상태이다.
요청을 받을때마다, ARP 브로드 캐스팅을 할 수 없으니, 메모리에 ARP 테이블을 저장해놓는다.
ARP 동작방식?
처음 브로드 캐스팅 방식으로 모든 서버에 쏴서 대상자 ip 가 맞으면, 해당 서버의 mac 주소 대상자 mac에 대입
아니면 재수신 안함 (서버 b에서)
서버 b에서 다시 서버 A 로 송신하고 서버 A는 mac 주소가 담긴 테이블을 받아서 저장
다음에 데이터를 보낼때, B 의 mac 주소를 알고 있으니 (ARP 테이블) ARP 통신 하지 않고 바로 전송
RARP?
ARP가 ip -> mac 주소로 변환하는거 였다면,
RARP는 mac - > ip 주소로 바꾸는거다.
하지만, ip 주소할당은 DHCP 애로 대체되어 현재는 사용되지 않음
게이트 웨이?
기본 게이트 웨이는 다른 원격지 네트워크와 통신할때 사용된다.
L2, L3 통신?
ARP통신을 할때, 서로 통신하는 서버끼리 로컬에 있어서, 브로드 캐스트만으로 상대방의 mac 주소를 알 수 있어 3계층인 라우터를 사용하지 않아서 L2 통신이라고 한다.
하지만, 서로 통신하는 서버가 원격지 네트워크에 있는경우, 기본 게이트웨이의 ip주소로 ARP 요청을 하여 원격지 네트워크의 mac주소를 받아 온다. 3계층의 라우터를 사용하기 때문에, L3 통신이라고 한다.
그래서, L2통신은 도착지 ip와 도착지 mac 주소가 서로 매핑되는 반면,
L3 통신은 도착지 ip 가 기본 게이트 웨이이고 도착지 mac 주소는 원격 네트워크의 NIC MAC 주소를 가르킨다.
'IT 엔지니어를 위한 네트워크 입문' 카테고리의 다른 글
5장 라우터 (0) | 2024.12.24 |
---|---|
4장 스위치 (0) | 2024.12.23 |
네트워크 연결, 구성요소 (2장) (1) | 2024.12.18 |