티스토리 뷰

네트워크 통신

2개 이상의 컴퓨터가 연결되어 통신하는 것을 네트워크 통신이라고 한다. Client와 Server의 request, response로 네트워크 통신이 이루어진다. 인터넷 망을 사이에 두고 네트워크 통신을 하는 것을 우리가 흔히 말하는 인터넷을 사용하는 통신방법이다. 이때 데이터를 주고 받는 단위는 패킷이다. 

 

인터넷 통신

네트워크 통신을 할 때, 각 통신하는 방법의 약속을 지정해야한다. 네트워크 통신을 할 때 지켜야할 절차나 규약을 프로토콜(protocol)이라고 한다. 

인터넷 통신 : IP(인터넷 프로토콜)

IP란 인터넷 프로토콜로 인터넷 네트워크의 통신규약이다. 인터넷 프로토콜의 역할은 지정한 IP주소(IP address)에 패킷단위의 데이터를 전달하는 것이다. 하지만, IP는 다음과 같은 한계를 가진다.

 

1. 비연결성 : server와 client가 연결되어 있지 않아도(대상이 없거나 서비스 불능상태) 데이터를 전송한다. 

2. 비신뢰성 : (중간 서버의 연결이 끊겨)중간에 패킷이 사라질 수도 있고, 보낸 순서대로 도착하는 것을 보장할 수 없다. 

3. 프로그램 구분이 불가 : 같은 IP를 사용하는 서버에 통신하는 애플리케이션이 둘 이상이면 그것을 구분할 수 없다.

 

이러한 한계점이 존재하기 때문에 인터넷 네트워크에서는 TCP/IP 방식을 가장 많이 사용한다.

패킷

인터넷 네트워크에서 데이터를 전달하는 단위이다. package + bucket의 합성어인듯 싶다. 제어정보 + 데이터로 이루어진다. 데이터를 보통 윈도우 크기로 쪼개 패킷에 담아 전송한다. 인터넷에서만 사용되는 단위는 아니고 네트워크에서 사용되는 단위인데 인터넷 네트워크는 패킷을 사용한다.

소켓(Socket)

네트워크를 경유하는 프로세스 간 통신의 종착점이다. 네트워크 통신을 하기 위해서는 소켓을 열어주어야 한다. 오늘날의 컴퓨터 통신은 대부분 인터넷 프로토콜을 기반으로 하기 때문에 대부분 네트워크 소켓은 인터넷 소켓을 의미한다. (위키참고)  

OSI모델과 TCP/IP 모델

통신에 참여하는 여러 장비나 프로그램이 맡은 역할이 있는데, 이 역할들을 분류하고 추상화 한 것을 계층모델이라고 한다. 1개의 계층으로 형성되어 있다면, 변경 사항이 생기면 전체를 바꿔야 하는 일이 생기지만, 계층을 나눠놓으면 해당 계층만 교체할 수 있기 때문에 계층(layer)으로 나눠 관리한다. 호환성 문제와 트러블 슈팅 측면에서 layer로 나누는 것은 이점을 가진다.

OSI 모델과 TCP/IP 모델

TCP/IP 프로토콜은 OSI 모델보다 먼저 개발되었다. 서로 관련이 있으나 완전히 들어맞지는 않는다. 두 모델 모두 계층형 이라는 공통점을 가지고 있으며 TCP/IP는 인터넷 개발 이후 계속 표준화되어 신뢰성이 우수인 반면, OSI 7 Layer는 표준이 되기는 하지만 실제적으로 구현되는 예가 거의 없어 신뢰성이 저하되어있다.OSI 7 Layer는 장비 개발과 통신 자체를 어떻게 표준으로 잡을지 사용되는 반면에 실질적인 통신 자체는 TCP/IP 프로토콜을 사용한다
(출처: https://goitgo.tistory.com/25) 

인터넷 네트워크 통신을 할 때, 사용되는 모델은 TCP/IP 모델을 사용한다. 통신규약(프로토콜)의 모음이라고 할 수 있다. 

네트워크 기본 TCP/IP

 

Application에서 프로그램이 메세지를 작성하여 소켓 라이브러리를 통해 전달한다 -> OS 레벨에서 TCP/IP작업이 이루어진다. 메세지 데이터에 TCP 정보를 포함하여 IP에게 보내주면, IP정보를 추가한 패킷을 생성한다. -> 네트워크 인터페이스를 통해 서버에 정보를 전달한다.

TCP

IP가 인터넷 계층에 존재한다면 TCP는 부가적인 기능을 덧붙여 IP의 한계를 보완한다. 신뢰할 수 있는 프로토콜로 대부분 TCP를 사용한다. TCP가 가지는 큰 특징은 다음과 같다.

 

 

1. 연결지향 : 3-handshake를 사용하여 연결여부를 확인하고 데이터를 전송한다.

2. 데이터 전달 보증 : 데이터가 누락되면 누락여부를 알 수 있게 해준다.

3. 순서보장 : 도착하여 보여질 데이터의 순서를 보장해준다.

UDP

IP와 거의 같다고 보면된다. IP+포트+체크섬 정도의 정보를 가지고 있다. 연결성 여부를 판단하거나 하는 등의 절차가 없이 IP랑 거의 비슷하기 때문에 단순하고 빠른 특성을 가진다.

TCP에서 3 way Handshake

클라이언트와 서버가 연결되어 있는지 여부를 먼저 확인한다. syn이라는 접속요청을 보내면 서버는 syn+ack을 보내 접속요청과 요청수락을 보낸다. 클라이언트도 요청수락(ack)을 보내 둘 사이에 연결이 되어있음을 확인하는 과정이다.

IP

인터넷 프로토콜의 역할은 지정한 IP주소(IP address)에 패킷단위의 데이터를 전달하는 것이다.

DNS(Domain Name System)

IP정보는 기억하기 어렵고 변경가능성이 존재하기 때문에 도메인이름을 접속정보를 사용한다. 도메인명과 IP 주소가 매칭되어 있는 시스템이며, 전화번호부 같은 존재라고 생각하면 이해하기 쉽다. 도메인 이름을 가지고 IP 주소로 변환해준다. 클라이언트가 DNS 서버에 도메인 명을 보내면 DNS 서버는 IP주소를 응답해준다. 받은 IP 정보를 가지고 클라이언트와 서버의 통신이 이루어질 수 있다.

포트(Port)

같은 IP에서 여러가지 어플리케이션을 사용할 수 있다. 같은 IP 내부에서 구분하기 위해서 포트라는 개념을 사용한다. IP가 아파트 단지라면, port는 몇동 몇호 라고 비유할 수 있다. 0~65535 번호를 할당가능하며, 0~1023은 잘 알려진 포트로 사용하지 않는 것이 좋다. 

웹 HTTP

인터넷에서 웹 정보는 http로 나타낸다. http 메세지에 여러가지 정보를 가지며 request, response로 통신한다. Stateless라는 특성을 가진다. 상태정보를 가지고 있지 않기 때문에 많은 데이터를 빠르고 확실하게 처리할 수 있는 범위성(scalability)를 가진다. 하지만, 로그인 정보등 상태정보를 가지기 위해서 쿠키(cookie)라는 기술이 사용된다. http 방식은 GET, POST등의 메소드를 통해서 서버에 임무를 지시한다. 초기에는 통신할 때마다 TCP 3-handshake를 해주었으나 지속연결 방식을 사용하여 접속량을 절약하고 있다. 

URI, URL, URN

URI(Resource Identifier)는 URL(Resource Locator)과 URN(Resource Name)을 포함하는 개념이다. URL은 리소스가 있는 위치를 지정한 정보를 포함한다. URN은 리소스에 이름을 부여한다. 위치는 변하지만, 이름은 변하지 않는다. 이름만을 가지고 리소스를 찾기는 어렵기 때문에 URN은 잘 사용되지 않고 URL이 흔하게 사용된다. 따라서 URI와 URL이 거의 같은 의미로 사용되는 경우가 많다.

정리

네트워크 통신은 여러개의 컴퓨터, 서버와 자료를 주고 받는 것을 의미한다. request, response로 이루어진다. 특히 인터넷 통신은 패킷이라는 단위를 사용하며, layer를 나눠 TCP/IP 모델을 사용하여 관리한다. 정보를 제공할 때는 layer을 통과하며 정보가 캡슐화되어 추가되고, 정보를 받을 때는 역캡슐화를 통해 정보를 받는다.

 

더보기

TCP/IP 쉽게, 더 쉽게 + 모두의 네트워크 + 그림으로 배우는 htttp & network basic 책을 읽고, 김영한님 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 정리한 내용입니다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함