반응형

TCP/IP


1. IP( Internet Protocol )란?

송신 호스트와 수신 호스트가 패킷 교환 네트워크에서 정보를 주고받는 데 사용하는 정보 위주의 규약이며, OSI 네트워크 계층에서 호스트의 주소지정과 패킷 분할 및 조립 기능을 담당합니다. IP는 ‘패킷’과 ‘데이터그램’이라는 단위로 나뉘어 전송되며 비신뢰성(Unreliability)과 비연결성(Connectionlessness)이라는 특징을 가지고 있습니다. 연결 세션을 구성하지 않고 흐름에 관여하지 않기 때문에 무결성을 보장할수 없습니다.


IP 주소 체계

각각의 Host들을 구분하기 위해 IP 주소라는 것을 사용합니다. IP 주소는 Host를 나타내는 고유의 IP가 되기에 중복되면 안됍니다. 단 반대로 여러 개의 IP가 하나의 Hos를 나타낼 수 있습니다. 


Ex) 192.168.0.1(10) – 11000000 . 10101000 . 00000000 . 00000001(2)

IPv4의 경우 위와 같이 32bit 2진 형태의 포맷을 가지고 있으며 표현시에는 8비트씩 구분하여 10진법으로 나타냅니다. 구분점은 점(.)으로 표시하고 각 부분을 옥텟(Octet)이라고 부릅니다. 4 옥텟의 IPv4 주소 체계는 각 옥텟이 0 ~ 255( 2^8 )범위로 나타낼 수 있습니다. 따라서 전체 IP 주소는 256 *256 *256 *256 = 약 42억개의 주소를 중복없이 나타낼 수 있습니다.


Class

원래 IPv4주소는 8비트 네트워크/ 나머지 호스트 주소로 단순하게 구분되어 있었으나 오늘날 기존에 비해 더욱 커지고 복잡해진 네트워크 영역 덕분에 각기 다른 크기의 네트워크 영역이 총 5개의 Class 단위로 정의 되었습니다.

* 각 Class의 처음과 마지막 주소는 각각 해당 네트워크 자체주소와 브로드캐스트용 주소로 예약되어 있습니다.  -> ( 일반목적 Class별 IP 표현개수 = 이론상 표현개수 – 2 )


A Class

Network ID = 0XXXXXXX.*.*.* = 2^7 – 2 ( 0.X.X.X ~ 127.X.X.X )

Host ID = *.XXXXXXXX.XXXXXXXX.XXXXXXXX = 2^8 * 2^8 * 2^8


B Class

Network ID = 10XXXXXX.XXXXXXXX.*.* = 2^6 * 2^8 – 2 ( 128.X.X.X ~ 191.X.X.X )

Host ID = *.*.XXXXXXXX.XXXXXXXX = 2^8 * 2^8


C Clsas

Network ID = 110XXXXX.XXXXXXXX.XXXXXXXX.* = 2^5 * 2^8 * 2^8 - 2 ( 192.X.X.X ~ 223.X.X.X )

Host ID = *.*.*.XXXXXXXX = 2^8 


D Class ( 멀티캐스트용 )

IP ID = 1110XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX = 2^4 * 2^8 * 2^8 * 2^8 ( 224.X.X.X ~ 239.X.X.X )


E Class ( 예비, 실험용 )

IP ID = 1111XXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX = 2^4 * 2^8 * 2^8 * 2^8 ( 240.X.X.X ~ 255.X.X.X )


공인, 사설 IP

앞에서 언급한 IP는 전부 공인 IP입니다. 인터넷에 보급에 따라 이러한 공인 IP 주소 또한 고갈의 문제가 제시되었습니다. 그래서 나온 대책이 ‘사설 IP’ 주소의 도입입니다. 외부와 연결되지 않는 네트워크에서 굳이 공인 IP를 사용하지 말고 자체적인 사설 IP를 돌려 씀으로써 공인 IP의 소모를 줄이는 방법입니다. 사설 IP의 주소 범위는 클래스별로 다음과 같습니다.

A Class = 10.0.0.0 ~ 10.255.255.255(10.0.0.0/8)

B Class = 172.16.0.0 ~ 172.31.255.255(172.16.0.0/12)

C Class = 192.168.0.0 ~ 192.168.0.0/16  



2. TCP( Transfer Control Protocol )란?

네트워크에 연결된 컴퓨터에서 실행되는 프로그램 간에 일련의 옥텟을 안정적으로, 순서대로, 에러없이 교환할 수 있습니다. 네트워크 정보 전달을 통제하는 프로토콜이자 인터넷을 이루는 핵심 프로토콜의 하나로서 국제 인터넷 표준화 기구(IETF)의 RFC793에 기술되어 있습니다.



TCP 특징

데이터 송수신 시 Byte 단위로 처리

양방향 통신 허용

오류 검증가능

연결 지향

Congestion / Flow Control

Buffer 사용




TCP 연결 설정 과정


1. 클라이언트가 서버에게 SYN segment를 보냄

2. 서버에서 SYN를 받고 SYNACK로 응답

3. 클라이언트에서도 SYNACK에 대한 ACK를 다시 보냄. 이 단계부터 데이터가 포함될 수 있음


+ 이 과정을 Three way handshake라 부른다.



TCP 연결 해제 과정

1. 클라이언트 end-system은 FIN segment를 서버에 보냄

2. 서버는 FIN을 받고 ACK로 응답. 일정시간 대기 후에 FIN segment를 클라이언트에 보냄

3. 클라이언트는 FIN을 받고 ACK로 응답. 

4. 서버는 ACK를 받고 일정시간 대기 후에 연결 종료


+ 일정시간 대기하는 이유는 아직 못보낸 데이터가 존재할 수 있기 때문


Flow Control ( 흐름 제어 )란?

Sender는 Receiver의 Buffer가 overflow되지 않을만큼 적당한 속도와 양의 데이터그램을 보낸다. 송수신자 사이의 데이터 처리율 차이에 대한 해결방법


Congestion Control ( 혼잡 제어 )란?

Sender는 Network상의 Buffer(Router)가 overflow 되지 않을만큼 적당한 속도와 양의 데이터그램을 보내거나, 다른 경로를 찾는다. 송신자와 네트워크의 데이터 처리율 차이에 대한 해결방법


3. 결론

IP > 3L Protocol 

TCP > 4L Protocol

인터넷 통신에 가장 많이 사용하는 프로토콜인 IP의 신뢰성을 보장하기 위해 상위 프로토콜인 TCP가 같이 자주 쓰이며 이를 TCP/IP라고 부릅니다.


반응형

'이론 정리' 카테고리의 다른 글

한글 인코딩  (0) 2019.06.04
가상화 ( IO )  (0) 2018.02.11
가상화 ( 서버 )  (0) 2018.02.11
DNS  (0) 2018.02.08
Socket / Port  (0) 2018.02.05

+ Recent posts