728x90
반응형

Layer 4: https://www.youtube.com/playlist?list=PLelEzczSdJkCukp60g0DOGr7aruKyS6Rs
Layer 5:
why TLS and SSL - 
https://www.youtube.com/watch?v=SJJmoDZ3il8
How the negotiation works - https://www.youtube.com/watch?v=n_d1rCXNrx0
RE:Invent talk about TLS - https://www.youtube.com/watch?v=8AODa_AazY4

1. Connection

1. run in the server mode

nc -l 2389

서버가 2389 포트에서 연결 대기 시작

-l: 리스닝 모드로 실행

 

2. used in client mode

nc localhost 2389

클라이언트가 서버의 2389 포트로 연결 시도, localhost (or 서버IP)

 

서버IP 확인

# private ip
ifconfig
ip addr

# public ip
curl ifconfig.me
wget -q0- ifconfig.me
(whatismyip.com)

# ipv6
curl -6 ifconfig.me

 

3. 통신 테스트

# at client side
HI, server
# displayed at server side
HI, server

클라이언트가 메시지 전송, 서버 측에서 동일한 메시지 수신 확인

 

특징: 양방향 통신, 텍스트 기반, 간단한 소켓 통신 테스트에 유용, 실시간 메시지 전송/수신

2. File Transfer

1. initial setup

# client side - Create source file
$ echo "hello test" > testfile
$ cat testfile
hello test

# server side - Empty destination file
$ touch test

클라이언트 측 testfile이라는 파일이 있고, 내용은 hello test

서버 측 빈 test 파일이 존재

수신된 데이터를 test 파일로 리다이렉션, 서버 측의 test 파일에서는 클라이언트가 보낸 "hello test" 내용이 저장됨

3. Timeout

-w 플래그를 통해 연결 타임아웃을 설정할 수 있음

# server side
nc -l 2389

# client side
nc -w 10 localhost 2389

4. IPv6 connect

-4 또는 -6 플래그는 netcat 유틸리티가 어떤 유형의 주소를 사용해야 하는지 지정한다.

(-4 없이 IPv4 주소를 적을 경우 연결 가능)

# server side
nc -4 -l 2389

# client side
nc -4 localhost 2389

5. Disable reading from STDIN

1) -d 플래그: stdin(표준 입력)에서 읽기를 비활성화

클라이언트에서 서버로 데이터 전송을 막음

(연결 수립 이후 텍스트 입력해야 함, 마지막 hi는 -d와 관계없이 무시됨)

2) -k 플래그: (keep listening) 서버 측 옵션, 클라이언트가 연결을 종료해도 서버는 계속 실행되어 새로운 클라이언트 연결 대기 상태 유지

→ 다중 클라이언트 연결 가능, 서버 수동 종료 전까지 계속 실행

3) -q 플래그: EOF(파일이나 데이터 스트림의 끝, 데이터 전송이 완료되었음을 알리는 시그널) 수신 후 5초간 대기

→ -w 플래그로 대체됨

# server side
nc -l 2389 > received_file.txt

# client side
 date; cat file.txt | nc -w 5 localhost 2389; date

4) -u 플래그: UDP 옵션 (서버와 클라이언트 모두 설정)

$ netstat -an | grep 2389
udp4 0 0 127.0.0.1.61430 127.0.0.1.2389
udp4 0 0 127.0.0.1.2389 127.0.0.1.61430

 

 

728x90
728x90

'Networking > Network' 카테고리의 다른 글

[essential#03] Wireshark  (0) 2025.02.07
[essentials#02] Telnet  (0) 2025.02.06
[AWS] setting up Nginx SSL  (0) 2024.07.30
VPN - Site-to-Site, Client VPN  (0) 2024.02.13
보안 그룹과 네트워크 ACL(Stateful vs Stateless)  (0) 2024.02.12
728x90
반응형

IPv6 데이터그램 형식 기술

 

인터넷 프로토콜 버전 6(IPv6: Internet Protocol version 6)이 필요한 이유

1) IPv4에서 직면한 주소 고갈 문제

2) 불필요한 처리로 인한 속도 저하, 새로운 옵션의 필요성, 멀티미디어 지원, 강력한 보안의 필요성 등

 

[변경된 부분]

1) 확장된 주소공간: IPv6 주소는 128비트 길이임, IPv4 주소의 32비트와 비교할 때, 주소 공간길이가 매우 크게(2^96배) 증가함

2) 개선된 헤더 형식: IPv6는 옵션들이 기본 헤더로부터 분리됨, 필요 시 기본 헤더와 상위 계층 데이터 사이에 삽입되는 새로운 헤더 형식을 사용함

→ 대부분의 옵션이 라우터에 의해 검사될 필요가 없음 → 라우터 과정을 단순화하고 빠르게 함

3) 새로운 옵션: IPv6는 부가적 기능을 허용하는 새로운 옵션을 가짐

4) 확장 허용: IPv6는 새로운 기술이나 응용 분야에 의해 요구되는 프로토콜의 확장을 허용하도록 설계됨

5) 자원 할당에 대한 지원: 서비스 유형(type-of-service) 필드가 삭제되고 흐름 레이블이라는 메커니즘이 추가됨

7) 향상된 보안성 제공: IPv6에서 암호화와 인증 옵션들은 패킷의 신뢰성과 무결성을 제공함

IPv4와 IPv6 헤더의 비교

- IPv6에서 헤더의 길이는 고정되어 있기 때문에 헤더 길이 필드가 제거됨

- IPv6에서 서비스 유형 필드는 제거됨, 트래픽 클래스와 흐름 레이블 필드는 서비스 유형 필드의 기능을 대신함

- 총 길이 필드는 IPv6에서 제거되고 페이로드 길이 필드로 대체됨

- 식별(identification), 플래그(flag) 및 옵셋(offset) 필드들은 IPv6 기본헤더에서 제거됨, 단편화 확장 헤더에 포함됨

- TTL 필드는 IPv6에서 홉 제한(hop limit)으로 불림

- 프로토콜 필드는 다음 헤더 필드로 대치됨

- 헤더 검사합(checksum)은 상위 계층 프로토콜에 의해 제공되므로 제거됨, 따라서 네트워크 계층에서는 필요하지 않음

- IPv4에서 옵션 필드(option field)는 IPv6에서는 확장 헤더로 구현됨

채택이 지연된 원인

IPv4 주소 고갈 문제가 3가지 문제로 필요성이 감소됨: 클래스 없는 주소 지정, 동적인 주소 할당을 위한 DHCP, NAT

패킷 형식

구성: 기본 헤더, 페이로드

 

- 버전(version): 4비트 필드, IP의 버전을 정의함

- 트래픽 클래스(traffic class): 8비트 필드, 서로 다른 전달 요구사항을 갖는 페이로드를 구분

- 흐름 레이블(flow label)

IPv4에서 IPv6로의 천이

Transition strategies: Dual stack, Tunneling, Header translation

이중 스택

버전 6으로 완전하게 이전하기 전에 모든 호스트가 이중 스택(dual stack) 프로토콜을 갖는다.

다른 말로, 인터넷의 모든 시스템이 iPv6를 사용할 때까지 IPv4와 IPv6를 동시에 운용해야 한다.

 

패킷을 목적지로 보낼 때 어느 버전을 사용해야 할지를 결정하기 위해 발신지 호스트는 DNS에 질의를 한다.

DNS가 IPv4/6 주소를 응답한다면 발신지 호스트는 IPv4/6 패킷을 보낸다.

터널링

tunneling, IPv6를 사용하는 두 컴퓨터가 서로 통신하는데 IPv4를 사용하는 영역을 통과해야만 할 때 사용되는 전략

IPv6 패킷 영역에 들어갈 때 IPv4 패킷 내 캡슐화되고, 영역을 나올 때 역캡슐화된다.

 

헤더 변환은 IPv6 주소를 IPv4 주소로 변환하기 위해 맵 주소를 이용한다.

IPv6 패킷 헤더에서 IPv4 패킷 헤더로 변환하는 과정에서 사용되는 규칙

- IPv6 맵 주소는 오른쪽 32비트를 취함으로써 IPv4 주소로 변환된다.

- IPv6 우선권 필드의 값은 버려진다.

- IPv4에서 서비스 필드의 형태는 0으로 설정된다.

- IPv4의 검사합이 계산되어 해당 필드에 삽입된다.

- IPv4 흐름 레이블은 무시된다.

- 호환 확장 헤더는 옵션들로 전환되어 IPv4 헤더에 삽입된다.

- IPv4 헤더의 길이는 계산되어서 해당 필드에 삽입된다.

- IPv4 패킷의 전체 길이는 계산되어서 해당 필드는 삽입된다.

 

Reference

Behrouz A. Forouzan (2009), TCP/IP 프로토콜(Protoccol Suite), 4th Edition

RFC 2460, 2461, 2462

 

728x90
728x90

+ Recent posts