1. TCP는 연결-지향형 통신이고, UDP는 비연결형 통신이다.
TCP는 통신 종단점으로 자료를 전송하기 위해 먼저 클라이언트가 연결 요청 메시지를 보내고, 서버는 이를 수락한다. 일단 클라이언트와 서버 간의 연결이 맺어지면 각각 표준 read, write 함수를 이용하여 대칭적 양방향 통신을 사용한다. 각 종단점에는 클라이언트와 서버가 존재한다. 양단 모두에서 연결을 닫을 수 있고, 이 경우 다른 쪽은 읽기와 쓰기 명령 시에 이를 감지한다. 따라서 TCP 통신을 사용하는 애플리케이션은 언제 작업이 완료되었는지를 원격지로 알릴 수 있다.
반면 다수를 대상으로 자료를 전송하고 받는 애플리케이션은 UDP를 사용한다. 각 메시지들은 대상 주소를 포함하고 있어야 한다. UDP는 원격지의 실행 유무를 애플리케이션에 알랄 수 없다.
2. TCP는 바이트 스트림 기반이고, UDP는 메시지 기반이다.
애플리케이션이 한 번의 sendto 함수를 이용하여 UDP 메시지를 전달하면, 반대편 종단점은 recvfrom을 호출하여 메시지 전체를 가져오거나 그렇지 못할 것이다.
반대로 한 번의 TCP write를 이용하여 데이터 블록을 전송하는 애플리케이션은 수신 측이 한 번의 read를 통해 전체 데이터를 읽을 수 있다는 점을 보장하지 않는다. 한 번의 read 명령은 연속된 바이트를 스트림의 형태로 가져온다.
이 과정은 데이터 블록의 전체 혹은 부분일 수 있고, 여러 데이터 블록일 수 있다.
3. TCP는 전송한 순서에 맞게 바이트 스트림을 전송한다. UDP는 네트워크 상의 에러가 없다는 가정을 하더라도 전송된 순서와 상관없이 메시지를 받는다. UDP는 받은 순서대로 애플리케이션에 메시지를 전달한다. 각 UDP 패킷은 인터넷 상에서 각각 다른 통신로를 따라 전달될 수 있기 때문에 보내진 순서대로 도착하지 않을 수 있다. 반대로 수신 측 호스트의 네트워크 하부 시스템은 TCP 패킷을 버퍼에 저장하고, 애플리케이션에게 전송된 순서에 맞게 메시지를 전달하기 위해 순서 번호를 사용한다.
4. TCP는 신뢰할 수 있고, UDP는 신뢰할 수 없다. 만약 TCP가 원격지로 데이터를 전송할 수 없다면 에러를 리턴하여 실패 여부를 알린다. UDP는 그렇지 못하다. 네트워크에서 UDP 패킷이 손실될 수 있고, 이 경우 메시지는 절대 원격지로 전달되지 않는다. UDP는 수신 측과 송신 측에게 에러가 발생되었다는 사실을 알릴 수 없다.
5. UDP sendto 함수와 TCP write 함수는 보낼 메시지를 호스트의 네트워크 하부 시스템 버퍼로 복사한 후 리턴한다. UDP의 리턴은 수신 측의 상태와 무관하게 이루어진다. 반면 TCP의 리턴은 어느 정도 수신 측과 네트워크의 상태에 의존한다. TCP 네트워크 하부 시스템은 수신 측 호스트가 확인 패킷을 보내지 않음으로써 수신 측에 충분한 버퍼가 없다고 인지하거나 네트워크 트래픽이 혼잡할 수 있기 때문에 전송할 데이터를 버퍼에 보관할 수 있다. 보관된 데이터로 인해 이 후 실행되는 write 함수가 블록될 수 있다. TCP 프로토콜이 제어를 하더라도 TCP write 함수의 리턴을 데이터가 원격 호스트로 전송되었다는 것으로 해석하지 말아야 한다.
--------------------------------------------------------------------------------------------------------------------------]
TCP와 UDP 프로토콜 (서술형)
소켓통신에는 기본적으로 2가지의 통신방법이 있다. 신뢰성 프로토콜인 TCP(Transfer Control Protocol)와 비신뢰성 프로토콜인 UDP(User Datagram Protocol)가 그것입니다.
(1) TCP 통신의 개념
: TCP(Transmission Control Protocol) 통신은 전화와 같은 방식으로 동작한다.
보통의 경우 상대방의 전화번호를 알고 있어야 전화를 거는 것처럼 TCP 통신을 하기 위해서는 상대방의 IP 주소와 Port를 알고 있어야 연결을 요청할 수 있습니다. 그리고 전화를 걸더라도 받아주지 않으면 계속해서 대기해야 합니다. 이와 마찬가지로 서버가 응답을 받아주지 않으면 계속적으로 요청을 하게 됩니다. 물론 어느 순간에 포기하는 것도 마찬가지입니다.
만약 전화를 받았다고 생각해 보자. 양방향 통신이 가능하다. 한번 연결되면 계속해서 상대방에게 음성을 전달할 수 있는 것처럼 TCP 통신에서도 계속적으로 소켓을 통해서 데이터를 주고 받을 수 있다.
전화가 연결된 후 끊기 전까지는 계속해서 통신을 할 수 있는 것이다. 그리고 양방향 모두 가능하다. 데이터의 확인 절차도 거치게 된다. 만약 전화가 잘 들리지 않는다면 상대방은 '뭐라고요?'라고 할 것이다. TCP 프로토콜도 자료를 받지 못했다면 다시 요청하는 메커니즘을 가지고 있다.
(2) UDP 통신의 개념
: UDP(User Datagram Protocol) 통신은 편지에 비유할 수 있다.
편지를 쓸 때 편지지에 데이터를 기록하고 편지 봉투에 상대방의 주소와 자신의 주소를 표시한 후 그냥 보내 버립니다. 편지가 도착했는지 않았는지 알 수 없다. 이러한 원리는 UDP에서 그대로 적용된다.
먼저 데이터를 생성한 후 상대방의 주소와 자신의 주소를 기록하고 보내버리면, 그 데이터를 받았는지 확인할 방법은 없다. 단지 보냈다는 사실만 존재할 뿐이다. UDP 통신 자체는 상대방과 연결되어 있는 개념이 아니다 .자신의 로컬 머신에서 소켓을 개설하고 데이터를 랜카드에 실어 버리는 개념이다. 때문에 편지를 우체통에 넣어버리는 개념과 흡사한 것이다.
편지를 받는 사람 입장에서 생각해 보자. 편지가 왔는지 안왔는지 편지함을 열어보기 전에는 알 수 없다. 이것과 마찬가지로 상대방이 UDP를 통해서 데이터를 보냈다 하더라도 UDP 소켓을 통해서 자신의 포트를 열어보기 정네는 데이터가 왔는지 오지 않았는지 알 수 없다. 즉 자신의 로컬 머신에 소켓을 개설하고 데이터를 들어왔는지 오지 않았는지를 확인하는 메커니즘이 필요하다. 이것은 편지가 우편함에 있는지 없는지를 확인하는 것에 비유할 수 있다.
(3) 비교 분석
: TCP와 UDP 프로토콜의 통신 메카니즘의 차이는 일반적인 생호라에서 쉽게 찾아볼 수 있습니다. TCP 통신은 데이터를 주고 받을 때 데이터가 도착했는지 하지 않았는지 내부적으로 확인하게 됩니다. 만약 하지 않았다면 재요청을 하는 메카니즘을 가지고 있습니다. 이러한 확인 절차로 인해 속도면에서 느립니다 .하지만 UDP는 이러한 확인 절차를 거치지 않고 계속적으로 데이터를 보내기만 하고 받기만 하기 때문에 휠씬 빠른 속도로 처리될 수 있습니다.
속도면에서 UDP가 빠르지만 UDP는 데이터가 정확하게 도착했는지 하지 않았는지 알 수 없는 비신뢰성 프로토콜입니다. 이에 반해 TCP는 이를 보장하는 신뢰성 프로토콜입니다.
쉽게 이야기 하자면 TCP 는 전화와 비슷한 방식을 제공한다. 서로 연결된 상태에서만 정보를 교환 할 수 있다. UDP는 편지나 방송과 비슷하다. 발송된 편지는 수신자가 받았는지 안받았는지 알 수 없다. 전달하게 되면 그만인 것이다.
방송과 같은 경우도 비슷하다. KBS나 MBC에서 브로드캐스팅된 정보를 각각의 가정에서 받아 TV 화면으로 보지만 우리는 그것을 잘 받았다고 MBC나 KBS에 응답하거나, 잘못된 수식된 화면에 대해 재요청하거나 하지 않습니다.
용어를 좀 정리하면 전화가 유니캐스트,
방송이 브로드 캐스팅,
멀티캐스트는 브로드캐스트와 비슷하지만 전체 중 선택된 그룹만 보내는 것을 말한다.
--------------------------------------------------------------------------------------------------------------------------]
TCP 통신
TCP(Transmission Control Protocol)는 인터넷에서 가장 흔하게 그리고 많이 쓰이는 프로토콜 방식이다. 그 이유는 TCP통신은 error correction이라는게 존재하는데 말 그대로 에러를 다시 잡아주는 것이다. 서버에서 클라이언트에게 어떤 정보를 보냈다고 하자! 그러면 클라이언트는 서버가 보낸 정보를 제대로 받았는지, 확인해주는 메세지를 다시 서버에게 돌려주고, 클라이언트가 제대로 받지 못했을 경우엔 resend를 서버에 요청 할 수 있다. 그러면 loss된 데이터를 다시 클라이언트에게 보낼 수 있는 것이다. 이런 방법들을 flow control이라고 하며, 오리지널 데이터를 로스 하지 않고 받을 수 있게 한다. 즉, guaranteed delivery!
- UDP 통신
UDP(User Datagram Protocol) 은 인터넷에서 또 많이 쓰이는 프로토콜인데 그 사용처는 tcp 통신과는 다르다. tcp통신과의 가장 큰 차이는 단방향 통신이라는것! 서버가 클라이언트에게 혹은 클라이언트가 서버에게! error correction이 없고, 무조건 보내는 쪽에선 던지기만 하고 받는 쪽에선 받기만 한다. 그러다가 데이터 로스가 중간에서 발생하면 어쩌냐? 무시한다. 그냥 던지고 받는거다 ! 이렇게 되면 장점은 TCP통신 보다는 훨씬 빠른 전송을 보여주게 된다.
두 통신방법은 사용되는 곳이 다르다. 웹페이지 전송이다. 어떤 데이터 베이스를 전송할때는 반드시 TCP통신이 사용되어야 한다. 웹페이지가 전송오류로 얼빵한 화면이 떠져 있다면 사용자는 얼마나 황당하겠는가... 데이터 베이스는 물론이고
UDP통신은 비디오 오디오 신호 전송에 사용된다. 빠른 프레임으로 돌아가는 비디오 스트리밍 프로그램에 한두 프레임 로스가 생겼다고 resend를 재요청하고, 데이터 로스를 일일이 확인해서는 버퍼링 때문에 오히려 속터질것이다. 몇 프레임 정도 놓쳐도 오히려 상관없고 놓친 프레임은 과감하게 버리는 방식. 큰 파일을 스트리밍으로 내려 받을 때 적합하다. 인터넷 스트리밍 영상이나 음향들이 퀄리티가 오프라인으로 받아놓고 보는것 보다 좋지 않은 이유도 이것이다.
--------------------------------------------------------------------------------------------------------------------------]
CP/IP
--------------------------------------------------------------------------------------------------------------------------]
TCP와 UDP 프로토콜 (서술형)
소켓통신에는 기본적으로 2가지의 통신방법이 있다. 신뢰성 프로토콜인 TCP(Transfer Control Protocol)와 비신뢰성 프로토콜인 UDP(User Datagram Protocol)가 그것입니다.
(1) TCP 통신의 개념
: TCP(Transmission Control Protocol) 통신은 전화와 같은 방식으로 동작한다.
보통의 경우 상대방의 전화번호를 알고 있어야 전화를 거는 것처럼 TCP 통신을 하기 위해서는 상대방의 IP 주소와 Port를 알고 있어야 연결을 요청할 수 있습니다. 그리고 전화를 걸더라도 받아주지 않으면 계속해서 대기해야 합니다. 이와 마찬가지로 서버가 응답을 받아주지 않으면 계속적으로 요청을 하게 됩니다. 물론 어느 순간에 포기하는 것도 마찬가지입니다.
만약 전화를 받았다고 생각해 보자. 양방향 통신이 가능하다. 한번 연결되면 계속해서 상대방에게 음성을 전달할 수 있는 것처럼 TCP 통신에서도 계속적으로 소켓을 통해서 데이터를 주고 받을 수 있다.
전화가 연결된 후 끊기 전까지는 계속해서 통신을 할 수 있는 것이다. 그리고 양방향 모두 가능하다. 데이터의 확인 절차도 거치게 된다. 만약 전화가 잘 들리지 않는다면 상대방은 '뭐라고요?'라고 할 것이다. TCP 프로토콜도 자료를 받지 못했다면 다시 요청하는 메커니즘을 가지고 있다.
(2) UDP 통신의 개념
: UDP(User Datagram Protocol) 통신은 편지에 비유할 수 있다.
편지를 쓸 때 편지지에 데이터를 기록하고 편지 봉투에 상대방의 주소와 자신의 주소를 표시한 후 그냥 보내 버립니다. 편지가 도착했는지 않았는지 알 수 없다. 이러한 원리는 UDP에서 그대로 적용된다.
먼저 데이터를 생성한 후 상대방의 주소와 자신의 주소를 기록하고 보내버리면, 그 데이터를 받았는지 확인할 방법은 없다. 단지 보냈다는 사실만 존재할 뿐이다. UDP 통신 자체는 상대방과 연결되어 있는 개념이 아니다 .자신의 로컬 머신에서 소켓을 개설하고 데이터를 랜카드에 실어 버리는 개념이다. 때문에 편지를 우체통에 넣어버리는 개념과 흡사한 것이다.
편지를 받는 사람 입장에서 생각해 보자. 편지가 왔는지 안왔는지 편지함을 열어보기 전에는 알 수 없다. 이것과 마찬가지로 상대방이 UDP를 통해서 데이터를 보냈다 하더라도 UDP 소켓을 통해서 자신의 포트를 열어보기 정네는 데이터가 왔는지 오지 않았는지 알 수 없다. 즉 자신의 로컬 머신에 소켓을 개설하고 데이터를 들어왔는지 오지 않았는지를 확인하는 메커니즘이 필요하다. 이것은 편지가 우편함에 있는지 없는지를 확인하는 것에 비유할 수 있다.
(3) 비교 분석
: TCP와 UDP 프로토콜의 통신 메카니즘의 차이는 일반적인 생호라에서 쉽게 찾아볼 수 있습니다. TCP 통신은 데이터를 주고 받을 때 데이터가 도착했는지 하지 않았는지 내부적으로 확인하게 됩니다. 만약 하지 않았다면 재요청을 하는 메카니즘을 가지고 있습니다. 이러한 확인 절차로 인해 속도면에서 느립니다 .하지만 UDP는 이러한 확인 절차를 거치지 않고 계속적으로 데이터를 보내기만 하고 받기만 하기 때문에 휠씬 빠른 속도로 처리될 수 있습니다.
속도면에서 UDP가 빠르지만 UDP는 데이터가 정확하게 도착했는지 하지 않았는지 알 수 없는 비신뢰성 프로토콜입니다. 이에 반해 TCP는 이를 보장하는 신뢰성 프로토콜입니다.
쉽게 이야기 하자면 TCP 는 전화와 비슷한 방식을 제공한다. 서로 연결된 상태에서만 정보를 교환 할 수 있다. UDP는 편지나 방송과 비슷하다. 발송된 편지는 수신자가 받았는지 안받았는지 알 수 없다. 전달하게 되면 그만인 것이다.
방송과 같은 경우도 비슷하다. KBS나 MBC에서 브로드캐스팅된 정보를 각각의 가정에서 받아 TV 화면으로 보지만 우리는 그것을 잘 받았다고 MBC나 KBS에 응답하거나, 잘못된 수식된 화면에 대해 재요청하거나 하지 않습니다.
용어를 좀 정리하면 전화가 유니캐스트,
방송이 브로드 캐스팅,
멀티캐스트는 브로드캐스트와 비슷하지만 전체 중 선택된 그룹만 보내는 것을 말한다.
--------------------------------------------------------------------------------------------------------------------------]
TCP 통신
TCP(Transmission Control Protocol)는 인터넷에서 가장 흔하게 그리고 많이 쓰이는 프로토콜 방식이다. 그 이유는 TCP통신은 error correction이라는게 존재하는데 말 그대로 에러를 다시 잡아주는 것이다. 서버에서 클라이언트에게 어떤 정보를 보냈다고 하자! 그러면 클라이언트는 서버가 보낸 정보를 제대로 받았는지, 확인해주는 메세지를 다시 서버에게 돌려주고, 클라이언트가 제대로 받지 못했을 경우엔 resend를 서버에 요청 할 수 있다. 그러면 loss된 데이터를 다시 클라이언트에게 보낼 수 있는 것이다. 이런 방법들을 flow control이라고 하며, 오리지널 데이터를 로스 하지 않고 받을 수 있게 한다. 즉, guaranteed delivery!
- UDP 통신
UDP(User Datagram Protocol) 은 인터넷에서 또 많이 쓰이는 프로토콜인데 그 사용처는 tcp 통신과는 다르다. tcp통신과의 가장 큰 차이는 단방향 통신이라는것! 서버가 클라이언트에게 혹은 클라이언트가 서버에게! error correction이 없고, 무조건 보내는 쪽에선 던지기만 하고 받는 쪽에선 받기만 한다. 그러다가 데이터 로스가 중간에서 발생하면 어쩌냐? 무시한다. 그냥 던지고 받는거다 ! 이렇게 되면 장점은 TCP통신 보다는 훨씬 빠른 전송을 보여주게 된다.
두 통신방법은 사용되는 곳이 다르다. 웹페이지 전송이다. 어떤 데이터 베이스를 전송할때는 반드시 TCP통신이 사용되어야 한다. 웹페이지가 전송오류로 얼빵한 화면이 떠져 있다면 사용자는 얼마나 황당하겠는가... 데이터 베이스는 물론이고
UDP통신은 비디오 오디오 신호 전송에 사용된다. 빠른 프레임으로 돌아가는 비디오 스트리밍 프로그램에 한두 프레임 로스가 생겼다고 resend를 재요청하고, 데이터 로스를 일일이 확인해서는 버퍼링 때문에 오히려 속터질것이다. 몇 프레임 정도 놓쳐도 오히려 상관없고 놓친 프레임은 과감하게 버리는 방식. 큰 파일을 스트리밍으로 내려 받을 때 적합하다. 인터넷 스트리밍 영상이나 음향들이 퀄리티가 오프라인으로 받아놓고 보는것 보다 좋지 않은 이유도 이것이다.
--------------------------------------------------------------------------------------------------------------------------]
CP/IP
댓글 없음:
댓글 쓰기