네트워크 37

TCP, UDP 헤더 형식 그리고 게임서버 특징

1. TCP 형식 1) port 는 2의 16승인 65535의 경우의 수가 나올 수 있다. 단 0과 65535는 제외시켜야 하기 때문에 -2를 하면 65533개의 경우의 수가 나올 수 있다.  2) Sequnece number는 3way-handshakes 시에 필요한 일련번호이다. 데이터의 길이가 100byte 이면 100이 증가하고, 1000byte 이면 1000이 증가한다.  3) Data offset은 TCP Payload 위치를 계산할 때 사용된다. 4) Flag값은 TCP의 상태를 결정할 때 (Syn, Ack, FIN ... ) 사용됨 5) Reserved는 장애유형에 혼잡제어를 관리하며 6) window sizes는 버퍼의 여유공간을 뜻한다. 여유공간이 없으면 zero window 장애가 발..

네트워크 2024.10.31

TCP 연결종료와 상태변화

TCP 연결종료 과정은 4-way handshaking으로 연결할 때보다 조금 더 복잡하다.   한 가지 대전제는 특별한 이유가 없다면 클라이언트 행동이 Active하다. 즉 연결을 맺고, 끊음이 모두 클라이언트이다. (서버가 연결을 끊을 경우는 특수한 경우)   1) 연결이 되어 있는 상태에서 클라리언트는 서버로 FIN + ACK 를 보내어 연결 끊을 것을 알린다.2 ) 그리고 클라이언트는 ACK 가 오기를 기다린다.  3) 이 후 서버도 FIN+ACK 를 보내고, 4) ACK가 오기를 기다린다.  이 과정이  4-way handshaking 이다. 여기서 중요한 상태 개념은 TIME_WAIT 상태이다. 서버로 부터 FIN+ACK 가 오면 클라이언트는 TIME_WAIT 상태가 된다. 이는 누군가 연결을..

네트워크 2024.10.29

TCP 연결과정과 3-way handshaking

3-way handshaking은 TCP 연결 과정으로 늘 등장해왔다.     클라이언트가 접속 대기중인 서버 (192.168.0.20:80)에 접속을 할 때, 클라이언트는 소켓 하나 열어서 접속을 시도할 것이다. 이 때 Round Trip Time (갔다가 돌아오는 시간)이 50ms가 소요된다고 가정하자.  Syn, Ack 통신되는 단위는 세그먼트이다. 기본적인 세그먼트라면 헤더와 페이로드로 구성되어 있지만, 연결 과정에서의 세그먼트는 IP 헤더와 TCP 헤더만 존재한다. 단순 내부 연결, 즉 관리 목적의 세그먼트가 왔다갔다 한다.   1) Syn 을 할 때, 클라이언트 쪽에서 Sequence Number를 랜덤으로 생성한다. (예를들어 1000을 생성했으면 Syn을 할 때 서버에게 1000을 보내게 ..

네트워크 2024.10.29

TCP, UDP란

L4 대표 프로토콜인 TCP와 UDP 1) TCP에만 연결(Connection, Session) 개념이 있다.2) 연결은 결과적으로 순서번호로 구현된다.3) 연결은 '상태(전이)' 개념을 동반한다.4) TCP는 배려남, UDP는 배려가 없는 남자에 비유할 수 있다.  ...   1) TCP에만 연결(Connection, Session) 개념이 있다.TCP와 UDP 핵심은 '연결지향'에 있다. TCP는 연결지향이며, UDP는 연결지향이 아니다. 이 때 연결은 매우 논리적(Virtual)이다. 그렇기에 TCP 연결을 다른 말로 Virtual Circuit 이라고도 한다.  2) 연결은 결과적으로 순서번호로 구현된다. TCP연결은 순서번호이다. TCP 세그먼트를 퍼즐에 비유한다면, 퍼즐마다 번호가 부여된다. ..

네트워크 2024.10.24

Proxy Server (Forward Proxy, Reverse Proxy)

1. Proxy(프록시) 배경Network Proxy에 대한 학습 내용을 정리해보자. Proxy, 남을 대신해서 일을 처리한다라고 정의한다면 Proxy Server는 '대신 처리하는 서버'라고 정의해 볼 수 있다.  그림으로 Proxy(이하 프록시)를 표현해보자면 위와 같이 표현될 수 있다. 위 그림을 참고하여 다시 프록시 서버를 정의하자면, 프록시 서버란 클라이언트와 서버간의 중계 서버로, 통신을 대리 수행하는 서버를 말한다. 그리고 캐시/보안/트래픽 분산 등의 여러 장점을 가질 수 있다.  ...  2. Proxy(프록시)의 종류2-1) Forward Proxy (포워드 프록시) 포워드 프록시는 인터넷과 클라이언트 사이에 위치하고 있다.  특징1) 캐싱클라이언트가 요청한 내용을 캐싱한다. - 전송 시..

네트워크 2024.10.24

Ping과 RTT란

1) Ping 유틸리티(그냥 프로그램)는 특정 Host에 대한 RTT(Round Trip Time)을 측정할 목적으로 사용된다.2) ICMP(Internet Control Message Protocol) 프로토콜을 이용한다.3) DoS(Denial of Service) 공격용으로 악용되기도 한다.   Ping은 프로그램 이름이다. Ping은 ICMP를 이용해서 RTT를 측정하는 전형적인 프로그램이다.   ...   Ping의 경우엔 여러가지 형태로 많이 활용된다. 대표적으로 어떤 네트워크 상황을 확인하기 위한 도구이며 이를 악용하게되면 DDoS 공격이 되는 것이다.   만약 인터넷이 안될 경우 cmd > ping 을 해볼 수 있다. 게이트 웨이 (192.168.0.1)에 ping을 보냈는데, respon..

네트워크 2024.10.23

ARP(Address Resolution Protocol) 란

ARP (Address Resolution Protocol)  1) ARP는 IP주소로 MAC주소를 알아내려 할 때 활용된다.2) 보통의 경우 PC를 부팅하면 Gateway의 MAC주소를 찾아내기 위해 ARP Request가 발생하며 이에 대응하는 Reply로 MAC주소를 알 수 있다.  ARP (Address Resolution Protocol)에서의 Address는 IPv4 주소, Mac 주소를 의미한다.  ...  복습)  Host에서 기본적으로 주소는 IP주소(L3), Mac주소(L2) 두 개이다. (이 둘은 쌍으로 관리되기도 한다.) L3 통신을 하려면 L2 주소까지 알아야 될까? - 필요한 구간 내에서 알아야 된다.   ...   다시 살펴보자면, ARP 는 IP주소로 MAC주소를 알아내려 할..

네트워크 2024.10.22

인터넷 설정 자동화를 위한 DHCP

인터넷 사용 전에 해야 할 설정 1) IP 주소- Host를 유니크하게 식별할 수 있는 식별자 부여 필요- IPv4의 경우 32bit 숫자값으로 되어 있다. - ISP (Internet Service Provider) 에 돈을 주고, IP 주소를 할당받아 사용한다.2) Subnet mask3) Gateway IP주소=> IP 주소, Subnet mask, Gateway IP 주소 설정이 L3에 해당되는 영역이다. 4) DNS 주소- Dns 서버 주소도 설정을 해야한다.  보통의 경우 위 설정을 직접하지 않고, 자동 설정을 한다. 이를 자동으로 하겠다는 것은 DHCP를 설정한다는 것이다.  ...  DHCP 란, 1) DHCP(Dynamic Host Configuration Protocol) 체계는 주소를..

네트워크 2024.10.22

TTL과 단편화

인터넷이라는 집합체는 물리적인 스위치로 이루어지지만, 결국 논리적인 형태로 구현되는 네트워크라고 이해할 수 있다. 그리고 결국 인터넷은 라우터의 집합체이다.   라우터와 비교하여 생각해 볼 것이 L3 스위치이다. 이 둘을 구분하는 것은 큰 의미가 없다. 굳이 나누자면 라우터는 L3 스위치의 일종이라고 보는 것이 타당하다.  ...  인터넷 네트워크를 이루는 핵심적인 구성요소는 라우터와 DNS가 있다.  라우터를 비유하자면 택배 기사, 물류 센터와 같은 역할을 한다. 정보를 직접 수집하는 것이 아닌 '거쳐가는 곳'이다. 다른 라우터로의 서빙을 도와준다. 이 때 이동의 단위(HOP) 그리고 TTL의 개념이 필요하다.  ...  TTL과 단편화 1) Time To Live는 세포의 '텔로미어' 같은 역할을 한..

네트워크 2024.10.22

Host 자신을 가리키는 IP주소

인터넷은 다른 컴퓨터와의 통신을 위해 사용된다.   인터넷을 사용하는 것은 컴퓨터에서 실행중인 프로세스이다. 컴퓨터에는 여러 프로세스가 실행되고 있다. 이 때 내 컴퓨터에서 실행중인 프로세스 간에 통신을 해야하는 경우가 있는데 이 때 127.0.0.1 IP를 사용한다. 그리고 이를 Loopback Address라 부른다.   이를 구조적으로 살펴보자.   서버 역할을 하는 프로세스는 수신 대기를 하고 있다가 요청이 들어오면 요청을 처리한다. 이 때 같은 컴퓨터에서 클라이언트 역할을 하는 프로세스가 있다고 가정해보자.  해당 컴퓨터의 IP는 192.168.0.10 일 경우 해당 자신의 IP를 가지고 클라이언트 프로세스는 서버 프로세스에게 패킷을 보낼 수 있다. 하지만 IP 주소는 매번 바뀔 수 있어 Loo..

네트워크 2024.10.17