본문 바로가기
728x90
반응형

2023-1/컴퓨터네트워크및실습16

Cookie/Web-caching/DNS 더보기 클라이언트 정보가 쿠키라는 일종의 작은 DB에 저장된다. 클라이언트가 서버에 최초로 요청메세지를 보내면, 서버는 클라이언트에게 set-cookie: id 를 응답메세지에 보내준다. 이제 서버는 쿠키번호:사용자 정보를 저장하게된다. 이후, 클라이언트는 서버로 요청메세지를 보낼때마다 자신의 cookie id를 함께 보낸다. 이로 인해 서버는 해당 클라이언트 쿠키를 트래킹할수있다. HTTP프로토콜 자체는 stateless이지만 쿠키기술을 접목함으로써 stateless가 아니게 동작하게된다. 쿠키는 클라이언트 측에서 정보를 저장하는 간단한 메커니즘이며, 주로 웹사이트가 사용자를 식별하고 특정 정보를 기억하는 데 사용됩니다. 쿠키는 '키-값' 쌍의 형태로 데이터를 저장하며, 브라우저는 이 쿠키를 웹 서버에.. 2023. 6. 14.
HTTP 더보기 application 레이어의 패킷 Messsage이다. 웹페이지는 여러가지 오브젝트들로 구성되어있다. 각각은 여러개의 다른 웹 서버에 저장되어있다. 오브젝트들을 요청하는 절차, 포맷이 HTTP이다. HTTP는 TCP를 기반으로 한다. client는 request를 보내고 server는 response를 보냄. Non-persistent HTTP vs Persistent HTTP 유지가 되지 않는 HTTP, 유지가 되는 HTTP Non-persistent HTTP는 오브젝트를 하나 받을 때마다 TCP연결을 하고 끊는다. 매번 새로운 TCP연결이 필요하다. 반면 Persistent HTTP는 TCP연결이 유지되므로 한번의 연결로 여러개의 오브젝트를 받을 수 있다. Non-persistent HTTP.. 2023. 6. 13.
TCP congestion control 패킷로스의 대부분은 라우터의 큐 오버플로우로 인해 발생한다. 따라서 ack이 오지 않는것을 congestion의 증거라고 추정한다. ack이 돌아오지 않으면 네트워크에서 congestion이 발생한것으로 추정하고, sender의 window size(한번에 보낼 수 있는 inflight packet 수)를 줄여 전송속도를 낮춘다. 더보기 1980년대 전까지는 congestion control이 적용되지 않았었다. 이 때는 패킷 드랍이 발생하면 재전송하도록 했기 때문에 네트워크가 더 혼잡해져 악순환이 일어났다. sender의 윈도우를 cwnd라고 한다(congestion window) 이 윈도우는 혼잡에 따라 사이즈가 커지고 작아질 수 있다. TCP rate = cwnd/RTT bytes/sec이다. 전송.. 2023. 6. 12.
Connection-oriented transport: TCP, TCP flow control,.. TCP 특성 Point to point: 일대일 통신 Reliable, in-order byte stream: 신뢰성 있는, 순서대로 전송되는 바이트 스트림 Full duplex data: 전이중 데이터 통신 Cumulative ACKs(Ack(10)은 0부터 9까지 잘 받았고, 다음으로 10을 기대하는 의미) Pipelining: 윈도우를 사용하여 효율적인 데이터 전송 Connection-oriented: 연결 지향적 Flow control: 흐름 제어 Congestion Control: 혼잡 제어 TCP segment structure: 소스 포트, 목적지 포트, 시퀀스 번호, ACK 번호, 수신 윈도우, 체크섬, 플래그들, 옵션 등으로 구성 TCP segment structure src port#,.. 2023. 6. 11.
Go-Back-N, Selective Repeat rdt보다 성능이 좋은 reliable 프로토콜이다. 물론 실제로는 TCP를 사용하기때문에 Go-Back-N, Selective Repeat도 실제로 사용되지 않는다. 우선 rdt3.0을 보자. 데이터를 하나 보낼 때마다 피드백(ack)을 기다려야한다. 이것이 모두 딜레이가 된다. 데이터를 보내고부터, 피드백을 받을 때까지의 시간 중, 데이터를 실제 보내는데 걸리는 딜레이를 제외한 낭비되는 시간을 RTT라고 한다. RTT가 너무 크기때문에 sending utilization이 너무 낮은 문제가 있다. 따라서 RTT시간동안 데이터를 계속해서 보내는 방법을 사용할 수 있다. 파이프라이닝: 데이터를 병렬적으로 보냄 인플라이트 패킷: 전송하고 아직 ack을 못 받은 패킷 window: 인플라이트 패킷의 최대 수.. 2023. 6. 11.
Reliable Data Transfer(RDT) 실사용되는 것은 아니지만 TCP와 유사한 가상의 프로토콜 RDT를 알아보자. TCP가 채널을 reliable하게 유지시켜주기 때문에 어플리케이션 레이어는 데이터전송시 신뢰성 있다고만 생각한다. reliable하기 위해서는 아래 두 가지를 해결해야한다. -메시지(패킷) 에러: 비트에러 발생 -메시지(패킷) 로스 (우리는 rdt에서 단방향 통신이라 가정하자) rdt1.0 bit error가 발생하지 않고, 패킷 loss가 발생하지 않는 환경이라고 가정. 환경자체가 reliable하기 기능 없어도 reliable함 rdt2.0 bit error가 발생하는 환경(패킷로스는 일어나지않음) Error detection이 필요함. checksum 필드를 통해서 비트에러가 있는지 판단할 수 있다. receiver는 비.. 2023. 6. 11.
UDP Server & Client UDP 추가기능이 없는 전송프로토콜. 세그먼트가 로스될 수도 있고, 세그먼트 순서가 뒤바뀔수도 있는 서비스이다. TCP는 일대일이라서 여러 호스트가 연결하면 각 클라이언트와의 소켓이 필요하다. UDP는 여러 클라이언트와 통신하기 위해 하나의 소켓만 있으면 된다. UDP는 "Connectionless" 방식으로, 서버,클라이언트 모두 하나의 소켓만 이용하면 된다. sendto() #include ssize_t sendto(int sock, void *buff, size_t nbytes, int flags, struct sockaddr *to,socklen_t addrlen); TCP에서는 socket을 열면서 IP,PORT가 설정되어 write시 따로 이를 설정할 필요가 없었는데, UDP는 accept를 .. 2023. 6. 11.
Transport Layer Basic 줄글로 읽고싶다면 더보기를 클릭. 더보기 Transport layer는 네트워크에서 데이터 패킷을 '세그먼트'라고 부르며, 이는 어플리케이션 레이어로부터 받은 메시지를 세그먼트로 분할하여 네트워크 레이어로 전달합니다. 이 과정은 주로 메시지의 크기 때문에 필요합니다. 트랜스포트 레이어에서 주로 사용되는 두 가지 프로토콜은 TCP와 UDP입니다. TCP는 혼잡 제어, 흐름 제어, 그리고 연결 설정을 담당합니다. 또한, TCP는 신뢰성을 확보하기 위해 라우터에서 발생하는 큐잉 딜레이로 인한 패킷 손실을 감지하고 재전송을 담당하며, 세그먼트가 순서대로 도착하도록 관리합니다. 반면에 UDP는 이러한 TCP의 기능을 제공하지 않습니다. 또한, TCP와 UDP 모두 지연 시간과 대역폭을 보장하지 않습니다. 이는 패.. 2023. 6. 11.
htons / inet_addr Struct for Ipv4 Address struct sockaddr_in { sa_family_t sin_family;//주소체계 uint16_t sin_port; //포트번호 struct in_addr sin_addr;//IP주소 char sin_zero[8]; } struct in_addr { in_addr_t s_addr; } struct sockaddr { sa_family_t sin_family; char sa_data[14]; } Host Byte Order / Network Byte Order CPU에 따라서 상위 바위트를 하위 메모리 주소에 저장하기도 하고(빅 엔디안), 상위 바이트를 상위 메모리 주소에 저장하기도 한다(리틀 엔디안). CPU마다 데이터를 표현, 해석하는 방식이 다르다... 2023. 3. 31.
DHCP DHCP(Dynamic Host Configuration Protocol)는 네트워크 관리를 간편하게 하기 위해 사용하는 프로토콜이다. DHCP를 사용하면 네트워크 장치에 IP주소, 서브넷마스크, 기본 게이트웨이, DNS서버 주소와 같은 네트워크 구성 정보를 자동으로 할당할 수 있다. DHCP를 사용하면 수동으로 각 네트워크 장치의 구성을 변경할 필요가 없으므로 네트워크 관리가 훨씬 편리해진다. 이는 모바일 기기등에도 적용된다. DHCP의 4가지 절차 discover offer request ack 1. DHCP discover: 클라이언트는 DHCP discover 메세지를 브로드캐스트한다. 이 메세지는 클라이언트가 DHCP서버를 찾기 위해 전송된다. (서브넷 내로 브로드캐스트 되며, src의 port.. 2023. 3. 23.
Socket Basic (실습) Network Programming(Socket Programming) 소켓은 컴퓨터 네트워크에서 프로세스 간 통신을 가능하게하는 기술이며, 네트워크상에서 데이터 송수신을 담당한다. 소켓은 주로 클라이언트/서버 모델에서 사용되며, 클라이언트는 서버로 연결을 시도하고, 서버는 연결을 수락하고 데이터를 송수신한다. 소켓은 application 레이어와 transport레이어 사이의 인터페이스 역할을 한다. 서버측 주요코드 #include int socket(int domain,int type, int protocol); //성공시 파일 디스크립터를, 실패시 -1 반환 int bind(int sockfd, struct sockaddr *myaddr, socklen_t addrlen);//IP와 포트번호를 소켓.. 2023. 3. 17.
IP Addressing: classful, CIDR /IP Fragmentation /NAT IP Address(IPv4) 컴퓨터 네트워크에서 장치를 식별하는 고유한 32비트 숫자. 계층적 주소 지정: 10001101 11011111 01010100 0111000 이러한 IP주소가 있을 때 예를 들어, 왼쪽에서 24비트는 Network주소, prefix로 사용하여 기관(소속)을 나타내고 25째 비트부터는 Host주소, 해당 소속 안에서의 번호를 나타냄 (prefix가 항상 24비트인것은 아님) Classful addressing 예전에는 IP주소에서 Network부분을 8비트로 사용하였는데, 2^8으로 기관들을 나타내기에는 너무 적어서 Classful Addressing이라는것을 사용함. (오늘날엔 사용되지 않음) Classful Addressing은 A,B,C 등의 클래스로 나누어 A클래스는 .. 2023. 3. 17.
Network Layer Basic Layering 복습) 왜 레이어링을 할까? => 복잡성을 줄이고, 유연성을 높이기 위해. 그러나 레이어링 때문에 최대성능을 내지 못하기도 함. 레이어간 볼 수 있는 정보가 제한적이기 때문에, 크로스레이어 정보를 이용하면 더 좋은 성능을 낼 수 있음. Network Layer 네트워크 레이어의 주요 기능 - Forwarding : 라우터로 들어온 패킷을 다른 라우터로 보내는 것 - Routing : 패킷들이 출발지에서 목적지까지의 경로를 결정함. routing algorithms 라우팅은 출발지에서 목적지까지의 경로를 정하는데, 그 경로로 패킷을 이동시키기 위해 라우터는 라우팅 알고리즘을 통해 포워딩 테이블을 만든다 포워딩 테이블에는 라우터에 들어온 패킷을 어디로 보내야 할 지의 정보가 담겨있다. 그런데.. 2023. 3. 10.
Network Layer 이 블로그 글을 참고하여 공부하지 마십시오. 기록용으로 막 써내린 막장 글이므로 도움은 커녕 혼란만 가중시킬 뿐입니다. Layering Application Transport Network DataLink Physical 인접한 레이어끼리만 소프트웨어적인 인터페이스로 상호작용할 수 있다. 왜 레이어링 할까? 1. Reduce complexity: 복잡성을 줄일 수 있어서 2. Improve flexibility: 유연성을 증진하기 위해서 레이어가 나누어져 있기 때문에 유지,관리가 더 용이해진다 그런데, 레이어링의 단점도 존재한다. -최적의 성능을 내지 못한다. 레이어마다 참조할 수 있는 정보의 한계가 있다. (application 레이어에서는 application 레이어에 해당하는 헤더 정보만 볼 수 있.. 2023. 3. 9.
Network Core: Circuit switching, Packet switching Network Core : Mesh of interconnected routers 네트워크 코어에서 데이터를 전달하는 방법은 1. Circuit switching 2. Packet switching 이 있다. Circuit switching bandwidth를 나누어 사용하는 방식이다. 자동차 도로를 여러 차선으로 나눈다고 생각하면 된다. 사전에 Call setup을 통해 리소스를 할당해야 하고, 전용 도로(회선)으로 나눠놓으니, 성능이 보장된다는 장점이 있다. 그러나, 옆 도로에 차가 없는 상황에서도 내 전용 도로만 사용해야하기에 속도가 불필요하게 느릴 수 있다. Packet switching 오늘날 사용하는 방식이다. 도로를 나누지 않고 공유한다. 따라서, 한 번에 한 패킷만 전달가능하지만 그만큼 빠.. 2023. 3. 9.
연결지향성, 비연결성, TCP/UDP Network Structure: Network edge: 서버,클라이언트 (end devices) Network core: 라우터들 Access networks, physical media : 링크 Client/Server model: 항상 켜져있는 서버에 클라이언트가 요청을 보내고 응답을 받는 구조 Internet Services Models Connection-oriented service(연결지향성) : 보낸 데이터가 목적지에 도착되었는지 확인가능하여 데이터를 안정적으로 보냄 Connectionless service : 보낸 데이터가 손실되어도 상관하지 않음 TCP(Transmission Control Protocol: 전송 제어 프로토콜) -인터넷의 연결지향성(connection-oriented.. 2023. 3. 3.
728x90
반응형