패킷 전송 원리

Server/Winodw Network 2015. 7. 11. 20:03

TCP / IP 구조 데이터 전송 원리

 

Application에서 보내는 데이터를 목적지까지 전송하기 위해서는 각각의 프로토콜에서 정의한 제어 정보(IP 주소, 포트 번호, 오류체크번호)가 필요하다.

제어정보는 앞쪽에 붙는 Header와 뒤쪽에 붙는 trailer로 나뉠 수 있다.

이렇게 제어 정보가 결합된 형태로 실제 데이터가 전송되는데 이것을 패킷이라고 부른다.

패킷 = 제어 정보 + 데이터

 

이더넷에 연결된 두 종단 시스템이 TCP/IP를 이용하여 데이터를 교환하는 경우 패킷 전송형태는

송신을 하면서 헤더 또는 트레일러 형태로 제어정보가 덧붙여져서 패킷이 생성된다.

이 패킷이 수신측에 도착하면 이더넷/IP/TCP계층을 지나면서 헤더 또는 트레일러가 제거되면서

데이터를 애플리케이션이 받게된다.

 

이렇게 프로그래머는 데이터만 집중 구현하면 되고, 나머지 부분은 운영체제가 제공하는 프로토콜이 처리하는 것이다.

 

 

 

TCP/IP 프로토콜을 이용한 패킷 전송 원리 일반화

 

1. 애플리케이션과 전송계층은 실제적인 물리적 연결은 존재하지 않고 인터넷 계층과 네트워크 액세스 계층이 제공하는 기능으로 인해서 가상적인 연결이 존재하는 것으로 간주함

이 두 계층은 모두 종단에서만 작동한다.

 

2. 인터넷 계층은 종단 시스템과 라우터에 모두 존재하고, IP 주소와 라우팅 기능을 이용해서

패킷 전송 경로를 결정한다.

 

3. 실제 패킷 전송을 위해서는 네트워크 액세스 계층에서 제공하는 물리주소를 사용하는데

라우터를 통과할 때마다 이러한 물리주소는 다음 목적지로 패킷을 보내기 위해서 계속 변경된다

 

 

 

IP 주소, 포트 번호

TCP/IP 프로토콜을 이용해서 통신할 때에는 IP 주소와 포트번호를 이용한다.

IP주소는 32비트 값으로, 일반적으로 8비트 단위로 구분해서 각각10진수로 표기함

 

IP주소는 전세계적으로 유일한 값을 가지고 있다.

라우터가 라우팅을 할 때는 IP헤더에 포함된 수신자 IP주소를 이용하고, 데이터를 받은 쪽에서

답장할때는 IP헤더에 포함된 송신자 IP주소를 이용한다.

 

IP주소는 인터넷에 존재하는 호스트를 유일하게 구별할 수 있다.

하지만 통신의 최종 주체인 프로세스를 식별하지는 못한다.

 

포트 번호는 각 프로세스를 구별하는 식별자이다.

그러나 한 프로세스가 두 개 이상의 포트번호를 사용하는 경우가 종종 있다.

한 포트 번호를 두 개 이상의 프로세스가 사용하는 것도 가능하다.

 

포트 번호는 프로세스를 구별하는 식별자라기보다 통신의 종착지를 나타내는 식별자로 보는 것이 바람직하다.

 

TCP와 UDP는 포트 번호로 부호없는 16비트 정수 사용하므로 0~65535 범위가 가능하지만

모든 범위를 자유롭게 쓸 수 있는 것은 아니다.

 

포트 범위

 

 

  포트 번호

 분류 

  0 ~ 1023

 Well-known ports 

 1024 ~ 49151

 Registered ports 

 49152 ~ 65535

 Dynamic and / or private ports 

 

포트 번호 0 ~ 1023은 용도가 정해져 있으므로 함부로 사용하면 안된다.

서버를 작성할 때는 1024 ~ 49151 범위에서 하나 또는 일부를 선택해서 사용하는 것이 바람직함

 

IP주소는 사람이 기억하고 사용하기에 불편해서 도메인을 사용하는 경우가 많다.

 

 

 

**루프백 주소란?

컴퓨터의 네트워크 입출력 기능을 시험하기 위하여 가상으로 할당한 인터넷 주소(127.0.0.1). 실제로는 외부 네트워크에 연결되어 있지 않는 소프트웨어적 입출력 주소로서 이 주소로 발송된 데이터들은 되돌아서 다시 이 주소로 수신된 것처럼 동작한다. 웹 서버인터넷 소프트웨어의 네트워크 동작 기능을 시험하는 데 사용된다.

[네이버 지식백과] 루프백 주소 [loopback address, -住所] (IT용어사전, 한국정보통신기술협회)

 

 

클라이언트/서버 모델

 

네트워크 프로그램은 일반적으로 클라이언트/서버 모델로 작성한다.

 

클라가 서버에 요청을 하면 서버는 이 요청을 받아들인다.

하나의 컴퓨터에서 실행되는 두 프로그램 간에 클라이언트/서버 모델이 적용될 경우에

두 프로그램은 프로세스 간 통신 기법(TCP/IP)을 사용하여 상호 정보를 교환한다.

 

클라/서버 모델에서는 한 프로세스가 먼저 실행해서 대기하고, 다른 프로세스가 나중에 실행하여 접속하도록 하면 된다.

먼저 실행하는 쪽이 서버, 나중에 실행하는 쪽이 클라이다.

클라가 서버에 접속하기 위해선 서버의 IP 주소와 포트 번호를 미리 알고 있어야 한다.

반면에, 서버는 클라의 주소를 미리 알 필요가 없다.

클라가 보낸 패킷에는 클라의 주소 정보가 들어있기 때문에 서버는 이 정보를 이용해서

언제든지 해당 클라에 데이터를 보낼 수 있다.

 

'Server > Winodw Network' 카테고리의 다른 글

윈도우 소켓 초기화와 종료  (0) 2015.07.14
오류 처리  (0) 2015.07.14
윈도우 소켓  (0) 2015.07.13
소켓 개념  (0) 2015.07.13
TCP / IP 프로토콜 구조  (0) 2015.07.10
admin