본문 바로가기

TCP

(7)
TCP 소켓프로그래밍으로 웹서버 구현하기 네트워크 강의를 들으면서 배운 TCP 소켓프로그래밍을 통해 간단한 웹서버를 구현하였다. 일단 이 내용을 따라오기 위해선 소켓프로그래밍에 대한 이해가 필요한데 내 블로그에 자세한 설명이 있으므로 읽고오자! 또한 전문지식이 부족한 내가 직접 구현한 코드이므로 살짝 조잡하긴 하다. 1. 소켓프로그래밍 (1) (링크) Socket Programming (소켓 프로그래밍) (1) API API란 시스템이 어플리케이션에 제공하는 인터페이스이다. API에는 여러 종류가 있는데 우리는 TCP/IP에서 쓰이는 다양한 API중 Sokcet에 대해 알아 볼 예정이다. TCP/IP에 쓰이는 API는 Socket말고도 TL tjdahr25.tistory.com 2. 소켓프로그래밍 (2) (링크) Socket Programmin..
Socket Programming (소켓 프로그래밍) (2) 지난 글에서는 server와 client의 연결, 그리고 메시지를 보내고 받는 함수들에 대해서 알아보았다. 본 글에서는 앞서 배운 과정과 함수들을 이용하여 직접 통신해보는 프로그램을 구현한다. 지난 글에서 알아본 과정은 다음과 같다. 만약 과정이 이해가 안된다면 이전글(링크)를 통해 이해하고 오자. TCP 다음 코드들은 메시지를 보내는 예시코드이다. TCP 서버코드 #define BUFSIZE 1024 void error_handling(char *message); int main(int argc, char **argv){ int serv_sock; int clnt_sock; char message[BUFSIZE]; int str_len; struct sockaddr_in serv_addr; struct..
Socket Programming (소켓 프로그래밍) (1) API API란 시스템이 어플리케이션에 제공하는 인터페이스이다. API에는 여러 종류가 있는데 우리는 TCP/IP에서 쓰이는 다양한 API중 Sokcet에 대해 알아 볼 예정이다. TCP/IP에 쓰이는 API는 Socket말고도 TLK, XTI, Winsock, MacTCP등 여러 종류가 있다. Sokcet 소켓은 다섯개의 componet와 관련이 있다. 또한 아래의 함수들은 헤더파일과 헤더파일에 존재한다. 1. Protocol - 어떤 프토토콜을 사용할 건지 - socket()함수의 argument로 어떤 프로토콜을 사용할 건지 알려준다. 2. Source's address and port number - 보내는 곳의 주소와 포트넘버 - socket()함수는 socket descriptor(OS에서의 ..
CH3 : Transport Layer (5) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * Congestion Control 이미 여러번 언급했지만 이번강의에서는 congestion control에 대해 자세히 알아본다. Congestion 라우터가 처리할 수 있는 용량보다 많은 packet이 들어오게 되면 congestion이 일어난다. congestion이 일어나면 크게 두가지 상황이 발생한다. 1. packet loss (라우터의 buffer가 overflow가 나서 패킷이 로스된다) 2. long delays (라우터의 queue가 매우 혼잡하여 처리과정이 느리다) 이러한 문제가 발생하지 않게 사전에 예방을 해야하는데 방법은 sendring rate를 ..
CH3 : Transport Layer (4) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * Reliable Data Transfer - TCP는 SR ARQ방식과 비슷한 매커니즘을 사용한다. 그러나 SR처럼 WS를 정해놓지 않고 이 WS는 dynamic하게 변한다. 이때 이 WS는 flow control과 congestion control의 영향을 받는다. - cumulatvie ACK을 사용하고 다음에 받아야할 seq num을 보낸다 예를 들어 현재 seq num 1000번까지의 데이터를 받았다면 ack(1001)을 보낸다. - 재전송을 지원한다. timeout이 일어나면 재전송을 하는데 이때 이미 온 ACK에 대해서 똑같은 ACK이 3번오게되면 timeou..
CH3 : Transport Layer (3) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * 이전글에서는 UDP와 ARQ에 대해서 배웠다. 이번글에서는 TCP에 대해 자세하게 다룰 예정이다. TCP(Transmission Control Protocol) - 여러번 얘기했듯이 TCP는 연결지향형 프로토콜이다. 3-handshaking을 통해 상호간의 connection을 생성한 뒤 소통한다. - 1:1방식의 프로토콜이다. - full-duplex data 방식을 지원한다. full-duplex와 다른 개념에는 half-duplex, simplex가 있다. simplex : 단방향 통신, A는 B에게 또는 B는 A에게로만 통신할 수 있음 half-duplex : 양..
CH3 : Transport Layer (1) * 이 글에 관련된 모든 내용은 Computer Networking A Top-Down Approach 7th에서 가져온 내용이다. * 저번 챕터2에서는 Application Layer에 대해 공부했었다. 이번 챕터부터는 그 하위레이어 Transport Layer에 대해서 공부하겠당 Transport Services 트랜스포트 레이어는 app간의 논리적인 소통을 담당한다. 이 레이어는 end system에서 작동한다. sender side : app의 메시지를 segment단위로 잘라 하위레이어인 network layer로 보낸다. receiver side : segment단위의 데이터를 message로 합쳐 상위레이어인 application layer로 보낸다. 나중에 다시 배우겠지만 네트워크 레이어는..