CS-network 1. TCP/IP

ashd89·2025년 4월 14일

CS-study

목록 보기
1/3

📌 네트워크 기초

📖 노드와 링크

노드는 네트워크 장치 링크는 무선 또는 유선으로 연결된 상태를 의미한다.

📖 처리량과 대역폭


네트워크에 트래픽(데이터)이 전달되면 이는 디지털 신호이기 때문에 0 또는 1즉 bit 데이터로 전달된다.
이때 처리량(throughtput)은 1초에 수신되는 bit의 수(bps)를 의미하고,
이 처리량을 단위 시간 당 max값으로 설정한 것을 대역폭이라고 한다. 따라서 대역폭과 처리량의 단위가 동일하다!

📌 네트워크 토폴로지

📖 토폴로지

토폴로지는 노드와 링크가 어떻게 배치되어 있는 지를 의미한다.
종류는 Tree, 회선에 여러개의 노드가 연결된 Bus, 노드끼리 1대다 관계의 스타, 노드끼리 1-1-1 관계의 링, 노드끼리 다대다 관계를 가지는 메시 구조가 있다.

📖 스푸핑 in Lan(Bus)

Bus 방식에서는 중앙 통신 회선하나에 여러개가 연결되어, 해당 노선을 따라 순차적으로 데이터가 전달된다. 따라서 중앙 통신 회선에 접속만 하면, 데이터를 송신부에서 수신부로 가기전에 가로 챌 수 있는 단점이 잇는데 이를 스푸핑 이라고한다.

  • 주의 : 병목 현상이 발생했을 때, 회선 추가 및 대역폭 개선 등의 다양한 문제 해결방법이 있지만, 네트워크 토폴로지에 따른 올바른 방법을 적용해야 해결할 수 있다.

📌 네트워크 종류

  • 기본적으로 규모가 클수록 혼잡하고 속도가 느리다.

📖 WAN & MAN

  • WAN은 국가 및 대륙 범위의 통신망을 의미하고, 인터넷이 WAN에 속한다. MAN은 동일 국가 내 통신망으로 지역을 이어주는 통신망이다.

📖 LAN

  • LAN은 근거리 통신망을 의미하고, 보통 라우터나, 공유기를 통해 연결된다.

📌 명령어

📖 Ping

가장 많이 쓰이는 Ping은 원하는 노드를 대상을 패킷을 보내 수신 상태 및 도달시간을 확인할 수 있는 명령어이다. ICMP 프로토콜을 기반으로 통신한다.

패킷의 헤더에는 송신 IP + 프로토콜 + 패킷 번호를 가진다.

ICMP는 TCP/IP(전송계층)에서 패킷을 처리할 때 발생되는 문제나 정상 응답을 받을 수 있는 프로토콜이다.

  • Echo request는 ICMP에서 수신자에게 보내는 응답 요청 메시지를 담고 있으며
  • Echo reply는 수신자가 보내주는 응답이 기록된다.
  • Destination Unreachable는 전송실패 했을 때 즉, Echo reply와 반대의 상황에서 메시지가 저장되고
  • 마지막으로 Time Exceeded는 ICMP데이터의 생명을 의미하는 TTL이 0이 되었을 때 메시지를 송신자에게 메시지를 반환한다.

TTL을 1씩 증가시켜가면선 모든 노드를 기록하는 방법 = Traceroute

  • TTL을 1로 설정해서 패킷을 보내면
  • 다음 노드로 가면 TTL이 0이 되고, TimeExceeded 메시지 전송
  • 이후 다시 TTL을 1 증가 시키고, 다시 다음노드로 전달 반복
    => 결과적으로 겨쳐간 모든 노드에서 TTL이 0이 한번씩 되기 때문에, 송신한 노드에서는 목적지까지의 모든 노드에서 반환한 메시지를 확인 가능!

질문 1 : NAT(외부에서는 포트번호로 접근) 즉 라우터를 사용하게 되면 traceroute방식에서 해당 목적지를 어떻게 찾아갈까


📖 nslookup

DNS(인터넷 상의 전화번호부)를 확인하는 명령어

내부 DNS 서버에 어떻게 외부에서의 접근을 막나?

DNS 즉 외부에서 확인할 수 있는 도메인 정보가 아니라, 외부에는 공개 되지 않는 도메인 주소를 형성하여 만드는 내부 네트워크 도메인이다.
보통은 bind라는 프로그램을 메인 서버에 설치!, 원하는 도메인과 내부 ip를 연결하여, 파일로 저장해서, 도메인 이 형성되는 방식

즉 어떤 도메인이 입력되면, 외부 DNS 확인하기전에, 내부 DNS를 확인해서 있다면 해당 ip랑 연결 해주고, 없다면 외부 ip를 탐색!

질문 2 : 내가 만든 서버의 DNS가 A.com->B.com으로 바뀌었다. 다른 PC에서 내 서버ip로 DNS 테이블을 조회하면 A로 보일까 B로 보일까? 또 내 컴퓨터에서 nslookup을 하면 어떻게 보일까?


📌 TCP/IP 계층 구조

📖 애플리케이션 계층 = 프로토콜 계층

  • FTP는 파일전송, SSH 원격(암호화), HTTP(www. 인터넷), SMTP 메일전송 등이 있다.

📖 전송 계층

TCP와 UDP는 데이터 전송을 위한 프로토콜이다. TCP는 각 패킷을 순서대로 전달하고, 연결을 매 순간 확인하며 전달하는 방식이다. 즉 출발지에서 목적지까지 1차차로 연결이 성공하는 경로를 확인하고 그 경로로만 패킷을 전달한다. 그에 반해 UDP는 수신 여부를 확인하지 않고 데이터만 전달한다. 심지어 경로도 자유분방하다.

TCP연결 과정 및 해제 과정에서는 HANDSHAKE를 한다!

  • 3handshake -> data -> 4handshake

[3handshake]
TCP의 통신 노드는 ISN이라는 32-bit 시퀀스 번호(노드의 주민번호?)를 송신자가 보내고, 수신자가 받아서 자신의 ISN과 승인 응답으로 송신자의 ISN+1을 보낸 후, 다시 송신자가 받아서 승인 응답으로수신자의 ISN+1을 보내서 양방향으로 체크한 경우 통신을 시작한다.
이때 자신의 시퀀스 번호를 보는 과정을 SYN 승인 응답을 보내는 과정을 ACK라고 한다.

[data]
이후 인증된 TCP 통신 경로로 각 데이터를 교환하고

[4handshake]
통신을 종료하기 위해 FIN(종료 코드)을 송신자 측에서 전달하고 (1차 종료 상태), 수신자 측은 승인 응답인 ACK를 보낸다. 이 경우 ACK를 받은 송신자 측은 무응답 (2차 종료 상태)
이후 수신자 측은 응답이 없는 것을 확인하고 응답이 아닌 FIN을 처음으로 보낸다 (수신자 측의 마지막 통신). 이후 이를 받은 송신자는 2차 종료 상태에서 대기 상태로 전환되고, 승인 응답 전송한다. 이는 수신자가 받는 최종적으로 양뱡향으로 확인한 종료이기 때문에 수신자는 최종 CLOSED되고, 응답을 받을 수 없는 송신자는 대기하다가 time out되어서 CLOSED된다.

TCP 중간에 유실 되면

송신자는 데이터를 보냄과 동시에 이전에 통신한 기록을 기반으로 timeout을 설정한다. timeout이내로 데이터+ACK를 받지 못하면 해당 패킷을 재전송한다.

질문 3? timeout을 송신자 쪽에서 스스로 계산한다면 똑같은 데이터를 중복으로 보낼 수 있지 않나? TCP는 연결성을 보장하고 중복 데이터는 없다 그랬는데?


📖 인터넷 계층 : 원하는 IP 주소로 전송하기 위한 규칙

  • 연결을 보장하지 않는다!

📖 링크 계층

광섬유 등을 이용하여 물리적을 데이터를 보내는 계층 + 이더넷 계층인데 주로 맥주소를 교환한다.

📌 계층 간 통신

결국 최종적으로 통신을 할때에는 여러 계층을 통과해야하고, 결국 각 과정에서 필요한 프로토콜들이 모두 전달되어야한다. 즉 PDU(계층에서 계층으로 전달되는 데이터)는 반드시 이전 단계의 프로토콜을 가진다.

캡슐화 즉 애플리케이션 계층에서 데이터는 전송 계층으로 넘어가면서 TCP나 UDP 프로토콜이 추가되고 (L4), 다시 인터넷 계층으로 전달되면서 IP 프로토콜 등이 추가(L3), 이후에 링크 계층으로 넘어가면서 MAC 주소 등이 추가 되서, 물리적으로 이동 된다
이후에 다시 위 과정의 역과정인 비캡슐화 과정을 통해 애플리케이션 계층의 데이터만 뽑아서 전달 된다.

📖 VPN

VPN은 외부 접근 불가 + 연결되어야만 확인할 수 있는 일종의 보안통로로 통신하는 방식이다.

VPN도 결국 계층간 통신 과정을 거칠텐데, 왜 중간 노드에서 확인할 수 없는 보안통로를 만들 수 있는 것일까? 똑같이 비캡슐화 과정을 하면 보이는게 아닌가?
VPN에는 여러 방법이 있지만, 계층 간 통신과 연결을 하려면 IP 프로토콜 즉 L3단계에서의 로직을 봐야한다. VPN은 받은 캡슐화된 데이터(L3니까 IP+TCP+데이터)를 암호화한다. = 이전에 키교환 과정 필요
암호화한 캡슐화 데이터를 다시 L3까지의 프로토콜을 다시 붙인다.(IP+TCP+암호화:[IP+TCP+데이터]) 즉, 2중 캡슐화를 통해, 프로토콜을 통해 정상적인 통신 과정을 진행할 수 있게 하고(암호화하면 패킷의 프로토콜이 인식이 안됨), 중간에서 열어봤자 암호화 되서 볼 수 없게 하는 것이 VPN!

0개의 댓글