topology
Star

- 가장 일반적인 네트워크 구성 형태
- 허브가 중앙에서 다른 모든 노드들을 연결한다
- 통신망의 처리능력과 신뢰성은 허브가 좌우한다
- 케이블 하나의 문제는 해당노드에만 영향을 줄 뿐 전체 네트워크에 영향을 주지 않는다.
장점
- 케이블과 I/O포트하나만 필요하므로 설치비용이 저렴
- 중앙집중적인 구조라 유지보수와 확장이 용이하다
- 케이블연결이 끊어져도 전체 네트워크에 영향을 미치지 않는다(안전성)
단점
- 중앙제어장치(허브)에 장애가 있으면 전체 네트워크에 문제 발생, 통신량이 많으면 전송 지연
- 모든 노드가 중앙허브와 반드시 연결이 되어있어야 하기 때문에 많은 케이블 연결이 필요
- 최초 설치할 때 케이블에 소요되는 비용과 노력이 크다
Tree

- Star의 변형된 형태로 트리 형태의 노드에 전송제어장치(허브)를 두어 노드들을 연결
- 상위계층의 노드가 하위 노드들을 직접 제어하는 계층적인 네트워크에 적합
장점
- 제어가 간단해서 관리와 확장이 용이하다.
- 중앙의 전송제어장치(허브)에 더 많은 장비를 연결할 수 있어 각 장비간의 데이터 전송거리가 늘어남
- 우선순위를 부여할 수 있다.
단점
- 중앙에 트래픽이 집중되면 병목현상 발생
- 중앙의 전송제어장치가 다운되면 전체 네트워크 영향
bus

- 설치가 간단하고 비용이 적게든다
- 하나의 노드가 전송하면 브로드캐스트로 다른 모든 노드들이 수신가능
- 노드가 많아질수록 전력이 약해져서 성능저하
ring

- 반복적인 작업은 ring구조 사용
- 한 곳의 연결만 끊어져도 전체 네트워크에 영향
mash

- 지하철에서 ipv6와 함께 사용
- 연결이 끊어져도 다른 연결을 통해 유지한다
- 케이블 연결이 많기 때문에 비싸다
혼합형

TCP/IP 프로토콜 구조

- 현재는 대부분 OSI가 아닌 TCP/IP계층 구조를 사용한다
📒 이더넷(유선)망을 이용할 것인지 802.11(무선=와이파이)망을 이용할 것인지는 LLC가 규정해준다
📒 IEEE 802에 다양한 무선 통신이 정의되어 있다
📒 CSMA/CD : 다수의 호스트가 하나의 매체에 연결되서 통신 신호가 충돌이 일어나면 충돌을 감지하고 Delay를 준다 (IEE 802시리즈)
TCP헤더

-
UDP의 단점을 보완(UDP보다 헤더가 복잡함)
-
Reliable and stateful 서비스
-
Flags : 통신의 상태를 체크하는 기능(UDP단점 보완)
- URGENT : 다른 패킷보다 우선순위로 보냄
- ACK :응답
- PUSH : 상위 7계층으로 신속하게 보냄
(데이터 전송하기 위한 flag)
- RESET : 초기화
- SYNCK : 연결 설정
- FIN : 연결 종료
-
SN/AN : 데이터가 어디까지 갔는지 체크(UDP단점 보완)
three-way handshake

- TCP통신 전에 초기 연결설정
- 서로 통신할 준비가 되어있는지 체크(UDP X)
📌 그림에서 마지막 ACK의 seq : 8001이다

- 종료할때도 three-way handshake를 통해서 연결을 끊는다
📌 그림에서 마지막 ACK의 seq : x+1이다
four-way handshake

- 종료할때 상대방(서버)측에서 할말이 남은 경우 Four-way hanshake
데이터 전송

- SN/AN을 사용하기때문에 통신이 흘러가는 지점을 파악할 수 있다.
EX) 파일 받고있을 때 몇 퍼센트 되고있는지 보여줄 수 있다
📌 그림에서 마지막 ACK의 seq : 10001이다
📌 데이터를 전송하는건 오직 push만 가능하다
-> 데이터를 보낸 트래픽을 찾기위해서는 push만 찾으면 된다
State Diagram 참고
ICMP

- TCP/IP에서 IP 패킷을 처리할 때 발생되는 문제를 알리거나, 진단 등과 같이 IP 계층에서 필요한 기타 기능들을 수행하기위해 사용되는 프로토콜
TYPE : ICMP종류에 대해서 구분한다
CODE : 해당 ICMP종류에 대해서 세부정보를 구분
- ICMP는 기본적으로 응용프로그램에 데이터를 전달X
- 버퍼에 데이터를 보낼 수 있는 공간이 있긴하다
- 클라우드 실무에서도 ICMP를 이용해 어떤 오류가 나는지 정의할 수 있다.
- netstat -nr : 게이트웨이 주소 알기
- 외부와 통신하기위해 외부로 나가야하는데 이때 반드시 게이트웨이를 통과해야하고 따라서 게이트웨이 주소를 반드시 알아야한다.
- 게이트웨이를 통과하면서 식별한다
- 자신의 노드를 찾아갈수 있는 지점에 게이트웨이 존재
📒 라우터는 게이트웨이 역할도 같이 한다
- 게이트웨이 주소찾고 ping 주소 날린후 wireshark키고 wifi클릭후 검색창에 ICMP검색하면 ICMP가 실제로 사용된것을 확인할 수 있다
- ICMP종류 정의
IGMP
멀티캐스트 = 클릭한 사람만= '지정된 사람' 다수 한테만 전송하게끔 만든다
- 224.0.0.1, 239.0.0.1에서 224,239가 멀티캐스트를 나타낸다
- 멀티캐스트의 대표적인 프로토콜이 IGMP다
- 영상관련한 클라우드 실무에서 많이 사용되는 프로토콜
📒 wireshark에 IGMP입력하고 유튜브 live동영상 아무거나 틀면 IGMP가 실제로 사용되는 것이 보인다
브로드캐스트 = 다수의 전체
유니캐스트 = 1대1 통신
Ipsec
source : 192.168.140.200 dest : 192.168.140.205
- 이런식으로 S/D가 이루어져있으면 LAN이라고 생각되지만
사실은 S와D 사이에는 수많은 라우터가 존재한다.
- 이렇게 눈에 보이는 것과 같이 바로 옆에있는 것처럼 보이게 만들고 사이에 있는 수많은 네트워크와 실제 IP를 감추는 네트워크가 VPN이고 이 프로토콜이 Ipsec이다.
- ESP,AH프로토콜(암호화 프로토콜)을 사용한다면 Ipsec이다.
- 암호화, 실제 IP감추기, 중간의 네트워크 감추기가 주 기능이다.
Ipsec예시
UDP

도메인호출 처럼 빠르게 응답을 요구하는 기능은 UDP를 사용한다.
-
Unreliable 서비스
-
stateless서비스임 (C/S사이 연결이 되어있는지 확인안함)
-> 만약 Server의 port가 닫혀있는데도 보내려하면 ICMP가 type3(destination unreachable) 메세지를 보냄
-> 빠르긴하다 그러나 데이터 전송과정에서 문제가 자주 발생
-
비연결지향적이다 - 통신의 상태를 체크하는 기능이 없다
-
데이터를 전송할때 흐름제어가 안됨 = 그냥 보낸다 하면 끝까지보내고 에러나면 다시보냄 = 이어받기x
-
도메인 직접 호출해보기
ipconfig /flushdns
nslookup naver.com
wireshark에 dns검색
-
계층에서의 encapsulation과정
7계층에서 dns -> 4계층에서 UDP가 붙는다 -> 3계층 IP붙음 -> 2계층에서 Frame
TCP/UDP 참조
추가정보
GOOGLEDORK
filetype:pptx 네트워크
filetype:pdf network 기본
-> 원하는 정보 찾을때 유용
wireshark연습
port가 0~65536까지 있는데
- TCP통신에서 SYN를 보내서 SYN,ACK가 오면 열려있는 Port, RESET이 오면 닫혀있는 Port
- UDP통신에서 닫혀있는 Port에 ping을 보내면 ICMP(Destination unreachable)이 수신된다
-> 열려있는 Port식별 가능
-> 열려있는 Port를 통해서 공격당할 수 있다
= tcp의 flag에 64가지의 조합중에서 실제 사용중인 조합은
열 몇개 정도고 나머지에 대한 예외처리가 안되어있기 때문에 취약한 것이다
- wireshark에서 statistics에 들어가서 conversation에 들어가면 각 프로토콜마다 통신되고 있는 패킷수를 볼 수 있으며, 보고싶은 Port 우클릭해서 apply as a filter누른 후 selected눌러서 A<->B누르면 display filter를 활용할 수 있다.
- view - Time Display Format에 들어가 원하는 시간표시를 설정 할 수 있다
- Edit - Preferences - Appearance - columns에 들어가 '+'버튼으로 원하는 항목을 추가 가능.
ex) source의 포트번호를 추가하기위해 s-port로 이름 지정후 type : Src Port(unresolved) 선택, destination도 동일
마치며
생각보다 네트워크에 취약점이 많다는 것을 배웠고, 내가 클라우드 쪽에서 근무하게되도 가장 critical한 문제가 네트워크 문제일 것이라는 생각이 들었다. 따라서 에러를 식별하는 ICMP를 잘 활용하는 것과 , 해당 에러를 어떻게 처리하는지가 중요할 것이다.