TCP/IP(Transmission Control Protocol / Internet Protocol)
- 컴퓨터와 컴퓨터간의 지역네트워크(LAN : Local Area Network) 혹은 광역네트워크(WAN : Wide Area Network)에서
원활한 통신을 가능하도록 하기위해 만든 통신규약(Protocol)이다.
- 왜 TCP/IP 를 사용하는가?
개방성 : 하드웨어, 운영체제, 접속매체에 관계없이 동작할 수 있다. > 인터넷 통신을 위한 핵심으로 선택되었다.
- IP 프로토콜 위에 TCP 프로토콜이 놓이게 되므로 TCP/IP 라고 부르게 되었다.
- IP : node와 node 즉 컴퓨터와 컴퓨터간의 데이터 패킷을 전송하기 위해서는 각 node의 위치(주소값)을 알아야 한다.
이러한 주소값을 IP Address라고 하며, 점(.)으로 구분되는 4 byte 값을 사용한다. ex) 192.168.100.100
IP주소를 인간이 식별하기 쉽게 사용하는 것을 Domain Name이라 한다. ex) www.google.com
- TCP : 서버와 클라이언트 간에 데이터를 신뢰성있게 전달할 수 있도록 하기위해 만들어진 프로토콜이다.
데이터는 네트워크 선로를 통해 전달되면서 손실되거나 순서가 뒤바뀔수 있는데, TCP는 이러한 손실을 찾아내어 교정하고
순서를 재조합할 수 있도록 해준다. 연결지향 프로토콜이다.
다음의 두가지 기능을 가진다.
1. 패킷이 빠졌을 경우 재전송 요청
2. 패킷에 일련번호를 줌으로써, 서로 다르게 도착할 경우 순서를 재조합(교정)한다.
> 패킷은 하나의 고정된 경로로 전달되는 것이 아니라 임의의 경로를 사용하기 때문에 순서가 다르게 도착할 수 있다.
TCP와 UDP(User Datagram Protocol)
- 데이터를 전송하기 위한 프로토콜에는 TCP외에 UDP라는 프로토콜이 존재한다.
- TCP : 연결지향이며, 자체적으로 오류를 처리 및 뒤바뀐 메시지를 교정시켜주는 기능을 가지고 있다.
연결지향이란 데이터를 전송하는 측과 데이터를 전송받는 측에서 전용의 선로(Session)을 만든다는 의미이다.
데이터의 신뢰도가 중요하다고 판단될 때 주로 사용한다.
- UDP : 비연결지향이며, 오류를 처리하거나 순서를 재조합하는 기능을 가지고 있지 않다. 단순히 데이터를 받거나,
던져주기만 하는 프로토콜로, 특히 실시간 멀티미디어 정보를 처리하기 위해 주로 사용한다.
OSI 7계층과 TCP/IP 4계층
- OSI(Open System Interconnection Reference Model)는 ISO에서 제안한 모델로 컴퓨터 네트워크 소프트웨어의
개발을 돕기위해 7계층으로 나누어 정의한 명세서이다.
- 컴퓨터와 컴퓨터사이의 데이터 전송을 위해서는 위의 7개의 계층을 '직-간접적'으로 거쳐서 전송이 된다.
- 7계층으로 나뉜 이유는 각 계층은 캡슐화와 은닉화가 가능하며 보통의 개발자는 응용계층과 표현계층만 고려하여
개발을 하게된다.
- OSI 7계층을 4단계로 단순화 시켜 TCP/IP 4계층이라 한다.
TCP/IP 4계층에 의한 데이터 전송
- WWW(World Wide Web) 서비스를 이용하여 데이터가 전송되는 과정을 알아본다.
1. 사용자는 브라우저를 통해 www.google.com 같은 URL 입력을 통해 웹페이지를 요청한다.
2. 사용자의 요청(문자 메시지)는 인터넷을 통해 전달하기 용이한 패킷으로 만들기 위해 TCP 패킷으로 만들어진다.
3. 이것을 원하는 목적지(주소)로 보내기 위해 IP패킷으로 다시 만들어지고, 이것은 Eternet카드로 보내져 인터넷으로 나가게된다.
4. 인터넷의 여러장치(라우터, 토큰링 등)를 통해 www.google.com의 이터넷 카드로 TCP/IP 패킷이 전달되면 이 IP패킷을
분석해서 이 패킷이 어디에서 왔고, 그 도착지가 어디인지를 판단하게 된다.
5. 판단결과 목적지가 본인이라면 이 패킷을 전송 계층으로 보내게 되고, TCP 프로토콜을 사용하여 메시지가 누락된게
있으면 재요청하고 순서를 재호합 하는 등 패킷을 검사하여 이것을 다시 응용계층으로 보낸다.
6. 응용 계층에서는 웹서버(IIS, Apache 등)가 통신 패킷을 HTTP 프로토콜에 준하여 검사를 하게된다.
이후 사용자가 요청한 웹페이지를 읽어들여 위의 반대 과정을 통해 사용자에게 전달하게 된다.
7. 사용자에게 전달된 데이터를 웹브라우저가 받아 HTTP 프로토콜에 준하여 렌더링 작업을 거친 후 화면에 뿌려주게 된다.
- 위 과정에서처럼 각각의 계층은 각각의 계층끼리만 상관하고 있다. 즉, 웹서버는 HTTP프로토콜에 준하여 브라우져와
통신을 하고있고, 전송계층은 TCP프로토콜에 준하여 통신계층끼리 통신함을 알 수 있다.
TCP의 연결 지향
- 위와 같은 데이터 통신이 일어나기 전에 브라우저와 서버간에는 연결을 성립하는 과정이 선행된다.
- 즉 데이터가 전송되기 전에 데이터를 교환하기 위한 통신선로를 개설하게 되고, 이 통신선로 1개를 만들기 위해서는
3번의 데이터 전송이 일어나므로 이것을 three way handshake 라고 한다.
ex) 1. "거기 서버 있나요?" 2. "예 있습니다. 데이터 보내주세요." 3. "네 지금 보낼께요."
출처
- https://www.joinc.co.kr/w/Site/Network_Programing/Documents/IntroTCPIP
'개발 > 기타' 카테고리의 다른 글
LastModified 헤더를 이용한 파일변경 체크 (0) | 2020.12.06 |
---|---|
Maven 기본 (0) | 2019.11.12 |
UTC, GMT, Epoch Time (0) | 2019.10.11 |
Ajax에 관하여 (0) | 2018.12.13 |
META-INF 디렉터리에 대하여 (1) | 2018.04.12 |